简单 window 摇摆 JAVA

Simple window in swing JAVA

任务:使用 JAVA swing:

制作与下面截图中相同的 window

我做了什么:

结果如下:

我试过使用其他布局,但还是不行。我附上代码。

import javax.swing.*;
import java.awt.*;

public class MyJFrame extends JFrame {

    JPanel pan1 = new JPanel();
    JPanel pan2 = new JPanel();
    JPanel pan3 = new JPanel();
    JPanel pan4 = new JPanel();
    JPanel pan5 = new JPanel();
    JPanel pan6 = new JPanel();

    JButton jButton1 = new JButton("FR");
    JButton jButton2 = new JButton("FG");
    JButton jButton3 = new JButton("FB");
    JButton jButton4 = new JButton("A");
    JButton jButton5 = new JButton("B");
    JButton jButton6 = new JButton("C");

    public MyJFrame(){

        super("Simple Swing App");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(650,300);
        setLayout(new GridLayout(3,2));
        setResizable(true);



        JScrollPane scrollPane = new JScrollPane();

        jButton1.setBackground(Color.red);
        jButton2.setBackground(Color.green);
        jButton3.setBackground(Color.blue);

        pan1.setLayout(new GridLayout(1,3,2,2));
        pan2.setLayout(new GridLayout(1,3,2,2));
        pan3.setLayout(new BorderLayout());
        pan4.setLayout(new GridLayout(3,3,2,2));
        pan5.setLayout(new GridLayout(3,1,1,1));
        pan6.setLayout(new BorderLayout());

        pan1.add(jButton1);
        pan1.add(jButton2);
        pan1.add(jButton3);

        pan2.add(jButton4);
        pan2.add(jButton5);
        pan2.add(jButton6);

        pan3.add(pan1, BorderLayout.WEST);
        pan3.add(pan2, BorderLayout.EAST);

        for (int i=1; i<10; i++) {
            JButton jButton = new JButton(i+"");
            pan4.add(jButton);
        }

        for (int i=1; i<4; i++){
            JTextField jTextField = new JTextField(" Pole tekstowe " + i + " typu jTextField ");
            jTextField.setBackground(Color.WHITE);
            jTextField.setBorder(BorderFactory.createLineBorder(Color.CYAN));
            pan5.add(jTextField);
        }

        pan6.add(pan4, BorderLayout.WEST);
        pan6.add(pan5, BorderLayout.EAST);

        add(pan3);
        add(scrollPane);
        add(pan6);



        setSize(700,450);
        setVisible(true);
    }
}

如果问题是“如何制作这个 GUI?” 我会使用这种方法:

  • 3 x BorderLayout (red) - 一个用于整个 GUI,一个用于 PAGE_STARTPAGE_END 约束主 GUI 面板。
  • PAGE_START中使用的面板,2 x FlowLayout绿色),一个在LINE_START,另一个在LINE_END。 (1)
  • 在面板中 PAGE_END, 2 x GridLayout (blue),第一个是 3 x 3,另一个是单列。

  1. 如果顶部的组件(左侧和右侧的按钮组)需要完全相同的大小,也可以为它们使用网格布局。