27. november 2004 - 17:16
Der er
7 kommentarer
GridLayout og rækkernes højde
Hej Eksperter.
Jeg har bygget et GUI op vha. GridLayout(4, 1, 0, 0). Er der nogen af jer der ved hvordan jeg kan bestemme højden for 3 række i layoutet? ...er det i det hele taget muligt at gøre med GridLayout?
27. november 2004 - 17:22
#1
Du kan godt bestemme højden på de komponenter du har i dit GridLayout, men den vil være ens for allesammen. Alle vil ha' samme størrelse som den største komponent.
Hvis du vil ha' en bestemt højde på eksempelvis et JPanel i dit layout, er det bare at sætte: panel.setPreferredSize
27. november 2004 - 17:33
#2
Det er ikke så smart at alle rækkerne har samme højde. Jeg har to toolbars i de to første rækker, hvorefte jeg har en stor tabel i 3. række. Række 1,2 og 4 skal helst være så smalle som muligt, mens tabellens række skal fylde det meste.
Kan man skrive sådan her hvis den skal være 100 px høj: gridPanel.setPreferredSize(40)
27. november 2004 - 19:11
#5
Nu har jeg leget lidt med denne GridBagLayout, men alle panelerne ligger mega rodet. Desuden kan de ikke ses før man tilfældigt klikker på dem i vinduet.
Ved du evt. hvad det kan være årsagen til denne uorden?
- - - - - - - - - - -
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class mainGUI extends JFrame implements Constants {
private JToolBar toolbar = new JToolBar();
private JPanel bundPanel = new JPanel();
private JPanel gridPanel = new JPanel();
private JPanel tabPanel = new JPanel();
private Container guiContainer;
private Controller createTabel = new Controller();
private ButtonListener theButtonListener = new ButtonListener();
private ansatDialog nytAnsatDialog = new ansatDialog(this);
//Opsætning af GUI - kalder alle panelerne
public void windowLayout() {
setTitle("Vagtplan version 0.1");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiContainer = getContentPane();
createToolbar();
tabBar();
matrixVagt();
createAkt();
guiContainer.setLayout(new GridBagLayout());
layoutGUI();
nytAnsatDialog.setLocation(dialogX, dialogY);
setResizable(false);
}
// Opsætning af toolPanel
private void createToolbar() {
toolbar.setFloatable(false);
JLabel aarLabel = new JLabel(" År: ");
JLabel maanedLabel = new JLabel(" Måned: ");
JLabel ugeLabel = new JLabel(" Uge: ");
Object[] valuesAar =
new Object[] { "2001", "2002", "2003", "2004", "2005" };
Object[] valuesMaaned =
new Object[] {
"Januar",
"Februar",
"Marts",
"April",
"Maj",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"December" };
JComboBox aar = new JComboBox(valuesAar);
JComboBox maaned = new JComboBox(valuesMaaned);
JComboBox uge = new JComboBox();
for (int i = 1; i <= 52; i++) {
uge.addItem(new String("" + i));
}
JButton setUge = new JButton("Vis uge");
JButton nyAnsat = new JButton("Ny ansat");
toolbar.add(aarLabel);
toolbar.add(aar);
toolbar.add(maanedLabel);
toolbar.add(maaned);
toolbar.add(ugeLabel);
toolbar.add(uge);
toolbar.add(setUge);
toolbar.add(nyAnsat);
}
private void tabBar() {
JButton prevWeek = new JButton("Forrige uge", iconPrevWeek);
JLabel selectWeek = new JLabel(" Vælg uge til visning ");
JButton nextWeek = new JButton("Næste uge");
tabPanel.add(prevWeek);
tabPanel.add(selectWeek);
tabPanel.add(nextWeek);
}
//Her skal matrixen til vagtplanen laves
private void matrixVagt() {
JTable vagtTabel = new JTable(celler, columnNames);
Font defaultFont = vagtTabel.getFont();
Font newFont =
new Font("Verdana", defaultFont.getStyle(), defaultFont.getSize());
vagtTabel.setFont(newFont);
vagtTabel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
gridPanel.add(new JScrollPane(vagtTabel));
}
// Opsætning af bundPanel
private void createAkt() {
JButton nyAktivitet = new JButton("Ny aktivitet", iconNyAkt);
bundPanel.add(nyAktivitet);
}
private void layoutGUI() {
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(5, 5, 5, 5);
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 0;
c.gridheight = 0;
c.fill = GridBagConstraints.NONE;
guiContainer.add(toolbar, c);
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 0;
c.gridheight = 0;
c.fill = GridBagConstraints.NONE;
guiContainer.add(tabPanel, c);
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 0;
c.gridheight = 0;
c.fill = GridBagConstraints.NONE;
c.anchor = GridBagConstraints.WEST;
guiContainer.add(gridPanel, c);
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 3;
c.gridwidth = 0;
c.gridheight = 0;
c.fill = GridBagConstraints.NONE;
guiContainer.add(bundPanel, c);
}
public static void main(String[] args) {
mainGUI window = new mainGUI();
window.windowLayout();
window.setSize(800, 600);
window.setVisible(true);
}
}