Witam.
Mam problem z wyrównaniem komponentów typu JPanel stosując GroupLayout.
Screen: http://img501.imageshack.us/img501/5260/screennv6.jpg
Chodzi mi o różnicę w wysokości pomiędzy lewym panelem "Komputery" a prawą grupą paneli: "Informacje" i panelu z przyciskami. Lewy panel jest krótszy o jakieś 2px od prawej grupy. Żeby było bardziej widoczne zaznaczyłem granice tych paneli liniami na screenie Tutaj. Linie czerwona (lewy panel) i zielona (prawa grupa) powinny się pokrywać, jednak tak nie jest.
Kod:
public void createCompListWindow ()
{
addCompDialog = new AddCompWindow();
addCompDialog.createAddCompWindow();
setSize (400,350);
setTitle("Lista komputerów");
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setIconImage(new ImageIcon(CompListWindow.class.getResource("icons/compListWindowIcon.png")).getImage());
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
/*---Panel listy---*/
JPanel listPanel = new JPanel();
listPanel.setBorder(new TitledBorder("Komputery:"));
compJList = new JList(compNamesList);
JScrollPane compListScroll = new JScrollPane(compJList);
GroupLayout layoutL = new GroupLayout (listPanel);
listPanel.setLayout(layoutL);
layoutL.setAutoCreateGaps(true);
layoutL.setHorizontalGroup(
layoutL.createSequentialGroup()
.addGap(10)
.addComponent(compListScroll)
.addGap(10)
);
layoutL.setVerticalGroup(
layoutL.createParallelGroup(GroupLayout.Alignment.CENTER)
.addComponent(compListScroll)
.addGap(50)
);
/*---Koniec panelu listy---*/
/*---Panel informacji---*/
infoPanel = new JPanel ();
infoPanel.setBorder (new TitledBorder("Informacje"));
/*---Koniec panelu informacji---*/
/*---Panel przycisków---*/
JPanel buttonsPanel = new JPanel();
buttonsPanel.setBorder(new TitledBorder(""));
GroupLayout layoutB = new GroupLayout(buttonsPanel);
buttonsPanel.setLayout(layoutB);
addButton = new JButton (new ImageIcon(CompListWindow.class.getResource("icons/addIcon.png")));
addButton.setToolTipText("Dodaj komputer");
addButton.addActionListener(this);
editButton = new JButton (new ImageIcon(CompListWindow.class.getResource("icons/editIcon.png")));
editButton.setToolTipText("Edytuj wpis");
deleteButton = new JButton (new ImageIcon(this.getClass().getResource("icons/cancelIcon.png")));
deleteButton.setToolTipText("Usuń wpis");
checkButton = new JButton(new ImageIcon(this.getClass().getResource("icons/checkIcon.png")));
checkButton.setToolTipText("Sprawdź dostępność");
defaultButton = new JButton (new ImageIcon(this.getClass().getResource("icons/defaultIcon.png")));
defaultButton.setToolTipText("Ustaw jako domyslny");
layoutB.linkSize(SwingConstants.HORIZONTAL, addButton, deleteButton, checkButton, defaultButton);
layoutB.setHorizontalGroup(
layoutB.createSequentialGroup()
.addComponent(addButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(editButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(deleteButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(checkButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(defaultButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
);
layoutB.setVerticalGroup(
layoutB.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(addButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(editButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(deleteButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(checkButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
.addComponent(defaultButton, GroupLayout.PREFERRED_SIZE, 35, GroupLayout.PREFERRED_SIZE)
);
/*---Koniec panelu przycisków---*/
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
layout.linkSize(SwingConstants.HORIZONTAL, infoPanel, buttonsPanel);
layout.setHorizontalGroup (
layout.createSequentialGroup()
.addComponent(listPanel, GroupLayout.PREFERRED_SIZE, 150, GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(infoPanel)
.addComponent(buttonsPanel)
)
);
layout.setVerticalGroup (
layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(listPanel, GroupLayout.PREFERRED_SIZE, 300, GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(infoPanel)
.addComponent(buttonsPanel)
)
);
pack();
setVisible(true);
}
Skąd ta nierówność? Da się ją jakoś wyeliminować? Proszę o sugestie ;)
Pozdrawiam.</image>