2017-02-15 40 views
0

Я изучаю GUI в java, и у меня проблема с выравниванием компонентов. Я использую вертикальную коробку с тремя горизонтальными коробками. Я хочу, чтобы кулак и третий ящик располагались в центре, а второй - влево. Вот код.Выравнивание компонентов java

public class KopjoFushen extends JFrame 
    { 
    private JTextField text; 
    private JTextField text2; 
    public KopjoFushen() 

    { 
    super("Kopjo fushen"); 

    JLabel label=new JLabel(); 
    label.setText("Fusha1"); 
    text =new JTextField(10); 
    Box siper=Box.createHorizontalBox(); 
    siper.add(label); 
    siper.add(text); 
    text2 =new JTextField(60); 
    text2.setEditable(false); 
    text2.setText("Fusha e pandryshueshme"); 
    Box mes=Box.createHorizontalBox(); 
    mes.add(text2); 
    JButton buton=new JButton("Kopjo fushen e lire"); 
    buton.addActionListener(new ButonHandler()); 
    Box poshte=Box.createHorizontalBox(); 
    poshte.add(buton); 
    Box total=Box.createVerticalBox(); 
    total.add(siper); 
    siper.setAlignmentX(Component.CENTER_ALIGNMENT); 
    mes.setAlignmentX(Component.RIGHT_ALIGNMENT); 
    total.setAlignmentX(Component.CENTER_ALIGNMENT); 
    total.add(mes); 
    total.add(poshte); 
    setLayout(new FlowLayout()); 
    add(total); 
    } 

Первая проблема заключается в том, что оба первых блока имеют арифметические значения слева. Вторая проблема заключается в том, что если я использую большее число в конструкторе второго JTextField, первый JTextField становится больше. Вот что я хочу достичь http://prntscr.com/e8utum и вот что я сделал: http://prntscr.com/e8uusn

ответ

1

Первый Box фактически по центру. Кажется, что она выровнена слева, потому что она изменена в соответствии с родительской панелью.

В самом деле, если вы установите JTextField MaximumSize вы заметите, что она центрирована

text.setMaximumSize(new Dimension(300, Integer.MAX_VALUE)); 
+0

, что, кажется, сделать это. спасибо –