GroupLayout - выравнивание компонентов

У меня есть некоторые проблемы с выравниванием компонентов в groupLayout. Я хочу создать калькулятор типа "Макет" с двумя текстовыми полями вверху, справа под 6 кнопками, расположенными в 2 столбцах и 3 строках, и текстовым полем для результата, но метки не совпадают с текстовыми полями и поэтому идет с кнопками. Если вы можете дать совет, я был бы благодарен. Спасибо! Вот код:

Результат

public class View extends JFrame{

    JFrame frame = new JFrame("Example");
    JPanel p1 = new JPanel();
    JPanel p2 = new JPanel();
    JPanel p3 = new JPanel();
    JPanel p4 = new JPanel();
    JTextField tf = new JTextField(15);
    JTextField tf1 = new JTextField(15);
    JButton b = new JButton(" + ");
    JButton b1 = new JButton(" - ");
    JTextField tf3 = new JTextField(15);

    public View(){
        frame.setLayout(new FlowLayout());
        GroupLayout layout = new GroupLayout(p1);
         p1.setLayout(layout);
         layout.setAutoCreateGaps(true);
         layout.setAutoCreateContainerGaps(true);

         JLabel label = new JLabel("Polinom 1: ");
            JLabel label1 = new JLabel("Polinom 2: ");

        b.setSize(20,20);
        b1.setSize(20,20);

        b.setFont(new Font("Arial", Font.PLAIN, 50));
        b1.setFont(new Font("Arial", Font.PLAIN, 50));

         layout.setHorizontalGroup(
                   layout.createSequentialGroup()
                      .addComponent(label)
                      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                               .addComponent(tf)
                               .addComponent(b))
                      .addComponent(label1)
                      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                              .addComponent(tf1)
                              .addComponent(b1)

                ));
                layout.setVerticalGroup(
                   layout.createSequentialGroup()
                      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                           .addComponent(label)
                           .addComponent(tf)
                           .addComponent(label1))
                           .addComponent(tf1)

                      .addComponent(b)
                      .addComponent(b1)
                );

        frame.add(p1);

        JLabel l = new JLabel("Rezultat: ");

        p3.add(b);
        frame.pack();
        frame.setSize(500,400);
        // frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
}

0 ответов

Другие вопросы по тегам