JavaJFrame按钮组织

JavaJFrame按钮组织,java,swing,jbutton,layout-manager,grid-layout,Java,Swing,Jbutton,Layout Manager,Grid Layout,如何创建一个jframe来组织文本框和jbuttons,文本框在顶部,按钮1-10以3×4的网格布局 "TEXT BOX HERE" [1][2][3] [4][5][6] [7][8][9] [(][0][)] 这就是我到目前为止所做的: setTitle("Test"); setSize(400, 400); // Create JButton and JPanel JButton[] buttons = new JButton[12]; JButton

如何创建一个jframe来组织文本框和jbuttons,文本框在顶部,按钮1-10以3×4的网格布局

"TEXT BOX HERE"
[1][2][3]
[4][5][6]
[7][8][9]
[(][0][)]
这就是我到目前为止所做的:

setTitle("Test");
    setSize(400, 400);

    // Create JButton and JPanel
    JButton[] buttons = new JButton[12];
    JButton buttonLpar = new JButton("(");
    JButton buttonRpar = new JButton(")");
    JPanel panel = new JPanel();
    JPanel panel2 = new JPanel(new GridLayout(3, 4));

    // adding 10 buttons
    for(int i = 0; i < 10; i++) {
        buttons[i] = new JButton(String.valueOf(i));
    }
    buttons[11].add(buttonLpar);
    buttons[12].add(buttonRpar);

     JTextField text = new JTextField("",10);
     text.setFont(new Font("Helvetica Neue", Font.BOLD, 12));

     panel.add(text, BorderLayout.NORTH);
     panel.add(panel2, BorderLayout.CENTER);
     this.getContentPane().add(panel);

     setVisible(true);
     setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle(“测试”);
设置大小(400400);
//创建JButton和JPanel
JButton[]按钮=新JButton[12];
JButton buttonLpar=新JButton(“”);
JButton buttonRpar=新JButton(“)”;
JPanel面板=新的JPanel();
JPanel panel2=新的JPanel(新的网格布局(3,4));
//添加10个按钮
对于(int i=0;i<10;i++){
按钮[i]=新的JButton(String.valueOf(i));
}
按钮[11]。添加(按钮栏);
按钮[12]。添加(按钮PAR);
JTextField text=新的JTextField(“,10”);
text.setFont(新字体(“Helvetica Neue”,Font.BOLD,12));
面板。添加(文本,边框布局。北);
panel.add(panel2,BorderLayout.CENTER);
this.getContentPane().add(面板);
setVisible(真);
setDefaultCloseOperation(关闭时退出);
但这就是我被困的地方


好的,我应该注意,我需要一个for循环来填充3×4的gridlayout。但是我不知道循环中需要什么。

对于这种网格,假设您在运行中创建它,您只需要有一个
if-else
来查看您是否在最后一行数据上

例如:

import java.awt.GridLayout;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class GridLayoutWithEmptyComponents {
    private JFrame frame;
    private JPanel pane;
    private JPanel buttonsPane;
    private JButton[] buttons;

    private void createAndShowGUI() {
        frame = new JFrame(getClass().getSimpleName());
        pane = new JPanel();
        pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));

        buttonsPane = new JPanel();
        buttonsPane.setLayout(new GridLayout(4, 3));

        buttons = new JButton[10];
        for (int i = 0; i < buttons.length; i++) {
            buttons[i] = new JButton("" + (i + 1));
            if (i == buttons.length - 1) {
                buttonsPane.add(new JButton("("));
                buttonsPane.add(buttons[i]);
                buttonsPane.add(new JButton(")"));
            } else {
                buttonsPane.add(buttons[i]);
            }
        }

        pane.add(new JLabel("Text box"));
        pane.add(buttonsPane);

        frame.add(pane);
        frame.pack();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new GridLayoutWithEmptyComponents()::createAndShowGUI);
    }
}
然后将这些值用作
JButton
s值,而不需要在循环中使用
if-else


看看Java中的GridLayout:为了更好地帮助您尽快发布正确的“我有一个网格”,我只是不知道填充列表需要什么样的For循环。这是一个3乘4的网格。
String[] buttonValues = {"1", "2", "3", ..., "8", "9", "(", "0", ")"};