SwingJava中的简单窗口

SwingJava中的简单窗口,java,swing,user-interface,layout-manager,Java,Swing,User Interface,Layout Manager,任务:使用JAVA swing创建与以下屏幕截图相同的窗口: 我做了什么: 为顶部块(BorderLayout)创建了一个面板,向其中添加了两个面板(GridLayour),一个用于左按钮(FR、FG、FB),另一个用于右按钮(a、B、C),并将其全部添加到我的JFrame窗口 创建了一个JScrollPane并将其添加到JFrame中 为底部块(BorderLayout)创建了一个面板,向其中添加了两个面板(GridLayour),一个用于左侧按钮(1,2,3,4…),另一个用于JText

任务:使用JAVA swing创建与以下屏幕截图相同的窗口:

我做了什么:

  • 为顶部块(BorderLayout)创建了一个面板,向其中添加了两个面板(GridLayour),一个用于左按钮(FR、FG、FB),另一个用于右按钮(a、B、C),并将其全部添加到我的JFrame窗口
  • 创建了一个JScrollPane并将其添加到JFrame中
  • 为底部块(BorderLayout)创建了一个面板,向其中添加了两个面板(GridLayour),一个用于左侧按钮(1,2,3,4…),另一个用于JTextFiel文本字段,将其全部添加到我的JFrame窗口
结果如下:

我尝试使用其他布局,但仍然不起作用。我附上代码

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);
    }
}
import javax.swing.*;
导入java.awt.*;
公共类MyJFrame扩展了JFrame{
JPanel pan1=新的JPanel();
JPanel pan2=新的JPanel();
JPanel pan3=新的JPanel();
JPanel pan4=新的JPanel();
JPanel pan5=新的JPanel();
JPanel pan6=新的JPanel();
JButton jButton1=新的JButton(“FR”);
JButton jButton2=新的JButton(“FG”);
JButton jButton3=新的JButton(“FB”);
JButton jButton4=新的JButton(“A”);
JButton jButton5=新的JButton(“B”);
JButton jButton6=新的JButton(“C”);
公共MyJFrame(){
超级(“简单Swing应用程序”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
设置位置(650300);
setLayout(新网格布局(3,2));
可设置大小(真);
JScrollPane scrollPane=新的JScrollPane();
jButton1.收进背景(颜色:红色);
jButton2.收进背景(颜色:绿色);
jButton3.收进背景(颜色:蓝色);
pan1.setLayout(新的GridLayout(1,3,2,2));
pan2.setLayout(新的GridLayout(1,3,2,2));
pan3.setLayout(新的BorderLayout());
pan4.setLayout(新的GridLayout(3,3,2,2));
pan5.setLayout(新的GridLayout(3,1,1,1));
pan6.setLayout(新的BorderLayout());
pan1.add(jButton1);
pan1.add(jButton2);
pan1.add(jButton3);
pan2.add(jButton4);
pan2.add(jButton5);
pan2.add(jButton6);
pan3.添加(pan1,BorderLayout.WEST);
pan3.添加(pan2,BorderLayout.EAST);
对于(int i=1;i如果问题是“如何制作此GUI?”我将使用以下方法:

  • 3 x
    BorderLayout
    红色)-一个用于整个GUI,一个用于主GUI面板的
    页面开始
    页面结束
    约束
  • 页面_START
    中使用的面板中,2 x
    流程布局
    绿色),一个在
    行_START
    ,另一个在
    行_END
    (1)
  • 页面的面板中_END
    ,2 x
    网格布局
    蓝色),第一个是3 x 3,另一个是单列

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

  • 我想我能猜出这个问题,但因为我不喜欢猜,问题是什么?(1+)在使用具有不同布局管理器的嵌套面板时,您有正确的方法。您只需一步一步解决问题。不要将网格布局用作主布局。这会使每个面板的高度相同。保留框架的默认
    BorderLayout
    。然后将子面板添加到
    页面开始处
    中心
    PAGE\u END
    。请参阅:。一旦顶层布局符合您的要求,请转到子面板。这将成为一个迭代过程。@camickr“一旦顶层布局符合您的要求,请转到子面板”嗯..我实际上是走另一条路。从GUI的最小部分开始,将其表示为单个面板/布局是有意义的,然后我向外工作,将它们定位在具有不同布局的较大面板中。剥这只猫的皮的方法不止一种!@AndrewThompson我实际上走了另一条路。-每个人都有自己的。关键是to认识到您可以使用带有不同布局管理器的嵌套面板,而OP似乎正在这样做。谢谢您的帮助,您帮了我很多。只剩下一个问题:当窗口调整大小时,右下角的文本字段不会更改其大小。是否可以确保文本字段也会更改其大小?“你帮了我很多。”不客气。如果这有助于解决问题,请回答。只剩下一个问题:“开始一个新的问题线索。每个问题线索都应该有一个明确、具体的问题。”是否可以确保文本字段也会改变其大小?“提问时的提示。以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则提供更大的宽度和高度,以显示应如何使用额外空间。