Witam
Mam taki problem. Chciałbym w pewnym komponencie - JPanel uzyskać takie oto ustawienie elementów JLabel:
http://img202.imageshack.us/img202/1537/ustawieniek.jpg
W moim programie wszędzie stosuję managera GridBagLayout. Problem w tym, że komponenty JLabel(wartość 1, wartość 2, wartość 3)
będą miały zmienne wartości, a zatem ich długość za każdym razem będzie inna. W związku z tym nie wiem jak zrobić aby niezależnie od
ich wartości(również sytuacja gdy wartości te są puste) uzyskać takie ustawienie 3 niezmiennych JLabel(aby znajdowały się z lewej strony). Na początku ustawiam moje elementy w taki sposób:
public class ProductViewerPanel extends JPanel
{
private static final long serialVersionUID = 1L;
private GridBagConstraints gbc;
private JLabel nameL;
private JLabel priceL;
private JLabel pluL;
public ProductViewerPanel()
{
setPanelProperities();
initializeComponents();
addComponents();
}
private void initializeComponents()
{
gbc = new GridBagConstraints();
nameL = new JLabel("Nazwa");
priceL = new JLabel("Cena");
pluL = new JLabel("PLU");
}
private void addComponents()
{
gbc.anchor = GridBagConstraints.FIRST_LINE_START;
gbc.insets = new Insets(5,0,0,0);
gbc.gridx = 0;
gbc.gridy = 0;
add(nameL,gbc);
gbc.gridy = 1;
add(priceL,gbc);
gbc.gridy = 2;
add(pluL,gbc);
}
private void setPanelProperities()
{
GridBagLayout gbl = new GridBagLayout();
setLayout(gbl);
}
}
Jednak moje JLabel zgodnie z zasadą działania GridBagLayout ustawiają się na środku o tak:
http://img803.imageshack.us/img803/4513/ustawienie.jpg
Mógłbym sprawę załatwić ustawiając odpowiednio parametr inset ale problem w tym, że mój panel w zależności od rozdzielczości ekranu posiada różne rozmiary zatem chcąc odsunąć moje 3 niezmienne JLabel-e w lewą stronę nie mogę odsunąć ich o stałą wartość bo się wszystko zepsuje przy innej rozdzielczości. Może są jakieś proste rozwiązania tego problemu? Mam nadzieję, że sposób w jaki przedstawiłem problem okaże się wystarczający.
Będę bardzo wdzięczny za pomoc oraz wszelkie sugestie.
Pozdrawiam