如何将文本字段和标签放在7x3的网格中?

安德烈

网格中的第一列总是正确显示,然后其余部分开始替换其他单元格。此外,边框布局似乎没有起作用。我不知道问题是什么。它的顶部应有标题,中间应有7x3的网格,底部应有按钮。请帮忙!谢谢!

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class GUI extends JFrame{

    private JPanel mainPanel,titlePanel, fieldPanel, buttonPanel;

    private JLabel title, teams, totalP, wlt;

    private JTextField team1, team2, team3, team4, team5, team6, total1, total2, total3, total4, total5, total6, wlt1, wlt2, wlt3, wlt4, wlt5, wlt6;

    private JButton read, calc, champWin, earthCW, exit;

    final private int WINDOW_HEIGHT = 400;
    final private int WINDOW_WIDTH = 900;

    public GUI(){

        buildtitlePanel();
        buildfieldPanel();
        buildbuttonPanel();
        buildmainPanel();

        setTitle("Desert Soccer League");
        setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    private void buildmainPanel() {

        mainPanel = new JPanel();

        mainPanel.setLayout(new BorderLayout());

        mainPanel.add(titlePanel, BorderLayout.NORTH);
        mainPanel.add(fieldPanel, BorderLayout.CENTER);
        mainPanel.add(buttonPanel, BorderLayout.SOUTH);

        add(mainPanel);

    }

    private void buildtitlePanel() {

        titlePanel = new JPanel();

        title = new JLabel();

        title.setText("2014 Desert Soccer League Totals");

        titlePanel.add(title);



    }

    private void buildfieldPanel() {

        fieldPanel = new JPanel();

        fieldPanel.setLayout(new GridLayout(7, 3));

        teams = new JLabel();
        teams.setText("Teams");

        totalP = new JLabel();
        totalP.setText("Total Points");

        wlt = new JLabel();
        wlt.setText("Win-Loss-Tie");

        team1 = new JTextField(10);
        team2 = new JTextField(10);
        team3 = new JTextField(10);
        team4 = new JTextField(10);
        team5 = new JTextField(10);
        team6 = new JTextField(10);

        total1 = new JTextField(10);
        total2 = new JTextField(10);
        total3 = new JTextField(10);
        total4 = new JTextField(10);
        total5 = new JTextField(10);
        total6 = new JTextField(10);

        wlt1 = new JTextField(10);
        wlt2 = new JTextField(10);
        wlt3 = new JTextField(10);
        wlt4 = new JTextField(10);
        wlt5 = new JTextField(10);
        wlt6 = new JTextField(10);

        team1.setEditable(false);
        team2.setEditable(false);
        team3.setEditable(false);
        team4.setEditable(false);
        team5.setEditable(false);
        team6.setEditable(false);

        total1.setEditable(false);
        total2.setEditable(false);
        total3.setEditable(false);
        total4.setEditable(false);
        total5.setEditable(false);
        total6.setEditable(false);

        wlt1.setEditable(false);
        wlt2.setEditable(false);
        wlt3.setEditable(false);
        wlt4.setEditable(false);
        wlt5.setEditable(false);
        wlt6.setEditable(false);

        fieldPanel.add(teams);
        fieldPanel.add(team1);
        fieldPanel.add(team2);
        fieldPanel.add(team3);
        fieldPanel.add(team4);
        fieldPanel.add(team5);
        fieldPanel.add(team6);

        fieldPanel.add(totalP);
        fieldPanel.add(total1);
        fieldPanel.add(total2);
        fieldPanel.add(total3);
        fieldPanel.add(total4);
        fieldPanel.add(total5);
        fieldPanel.add(total6);

        fieldPanel.add(wlt);
        fieldPanel.add(wlt1);
        fieldPanel.add(wlt2);
        fieldPanel.add(wlt3);
        fieldPanel.add(wlt4);
        fieldPanel.add(wlt5);
        fieldPanel.add(wlt6);



    }

    private void buildbuttonPanel() {

        buttonPanel = new JPanel();

        buttonPanel.setLayout(new GridLayout(1, 5));

        read = new JButton();
        calc = new JButton();
        champWin = new JButton();
        earthCW = new JButton();
        exit = new JButton();

        read.setText("Read Input File");
        read.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        calc.setText("Calculate Points");
        calc.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        champWin.setText("Championship Winner");
        champWin.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        earthCW.setText("Earth Cup Winner");
        earthCW.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        exit.setText("Exit");
        exit.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }
        });

        buttonPanel.add(read);
        buttonPanel.add(calc);
        buttonPanel.add(champWin);
        buttonPanel.add(earthCW);
        buttonPanel.add(exit);



    }


}
卡米克尔
    mainPanel = new JPanel();

    mainPanel.add(titlePanel, BorderLayout.NORTH);
    mainPanel.add(fieldPanel, BorderLayout.CENTER);
    mainPanel.add(buttonPanel, BorderLayout.SOUTH);

默认情况下,aJPanel使用FlowLayout如果要使用BorderLayout,则需要在面板上设置布局:

    mainPanel = new JPanel( new BorderLayout() );

GridLayout首先填充行,因此代码应为:

fieldPanel.add(teams);
fieldPanel.add(totalP);
fieldPanel.add(wlt);

fieldPanel.add(team1);
fieldPanel.add(total1);
fieldPanel.add(wlt1);
...

还请注意,在您的代码中您要添加总数吗?两次(不做任何事情),而不是团队?领域。

指定网格的另一种方法是只使用:

fieldPanel.setLayout(new GridLayout(0, 3));

这告诉网格向每行添加3个组件,然后移至下一行。这样,您不必担心确切的行数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将x放在文本字段中?

如何将p标签中的文本回调到输入文本字段?

如何将两个带有边距的文本字段放在一行中?

如何将文本字段的值传递给 Swift3 中的按钮单击函数?

如何将项目 ID 从数据列表传递到文本字段标签

如何将文本字段的数据显示在表视图单元格的标签上?

如何将文本字段的QML文本转换为float和int

将图像放在文本字段内

如何将焦点更改为具有多个文本字段的ListView中的特定字段

如何将“select”下拉列表中的文本值设置为“input”文本字段?

如何将文本变量分配给 Visio 2013 中的文本字段?

如何将文本字段输入保存为整数 - Flutter 和 Firestore

如何垂直对齐文本字段的标签和按钮

如何将文本字段的值放入另一个文本字段?

如何将值从文本字段1写入文本字段2,反之亦然

如何正确连接 SQLite 与 JavaFX 中的文本字段和标签?

如何从Material-UI的大纲文本字段中模仿大纲和标签的外观?

如何将文本字段中的值添加到 eclipse 中的 jcombobox

Flutter:如何将文本字段中的输入保存到 int 变量中?

如何将Child追加到文本字段?

如何将段落与文本字段对齐

如何将验证文本字段设置为包?

如何将文本字段的值居中(颤动)

如何将文本字段转换为链接

如何将文本字段列表与左对齐对齐

如何将复选框链接到html / PHP中的文本字段

如何将 onClicked 按钮值设置为 reactjs(计算器)中的文本字段?

如何将TornadoFX中的文本字段限制为仅数字

如何将文本字段更改通知合并到textFieldDidEndEditing中