gpt4 book ai didi

Java将数据放入边框布局中

转载 作者:行者123 更新时间:2023-12-02 00:30:12 25 4
gpt4 key购买 nike

如何在Java中实现像windows计算器一样的如下输出,

示例,

First Row = Text Field
Second Row = 5 buttons
Third Row = 5 Buttons

以及边框布局中心的剩余数据,

如何将北边框布局中的第一、第二、第三行放在一起?这是我的代码,

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;

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

public class GridLayoutFrame extends JFrame
{

private JButton[] buttons; // Array of Buttons 1 to 10
private JButton[] topButton; // 10 buttons that has to be placed under Text field 5 button in each row
private JPanel Bottom; // A panel to show everything under first three Row
private JPanel Top; // Top Panel that contains Text Field and 2nd and third Row
private JTextField Input = new JTextField();

private static final String[] names =
{"7", "8", "9", "4", "5", "6","1","2","3"};

private static final String[] topButtons =
{"MC","MR","MS","M+","M-","<-","CE","C","+-","Root"};

// no-argument constructor
public GridLayoutFrame()
{
super ("Calculator");
Bottom = new JPanel();
Top = new JPanel();
Top.setLayout(new GridLayout(3,1,5,5)); // Three Rows (first row must only show a text field
Bottom.setLayout(new GridLayout(5,5,10,10));
topButton = new JButton[topButtons.length];
buttons = new JButton[ names.length ];


Input.setSize(500,500);
Input.setEditable(false);
Input.setBackground(Color.WHITE);
Input.setPreferredSize(new Dimension(300, 30));

for ( int count = 0; count < topButtons.length; count++ )
{
topButton[ count ] = new JButton( topButtons[count]);
Top.add( topButton[ count ] ); // add button to panel
}


for ( int count = 0; count < names.length; count++ )

{
buttons[ count ] = new JButton( names[count]);
Bottom.add( buttons[ count ] ); // add button to panel
}

add(Top,BorderLayout.NORTH);
//add(Bottom,BorderLayout.CENTER);

}
} // end class GridLayoutFrame

代码的问题是,文本字段与顶部按钮出现在同一行。请帮忙

最佳答案

最好使用 gridbaglayout 来满足您的需求,因为它非常灵活。您可以看一下http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html

我已经修改了您的程序以使用 GridBagLayout 作为顶部面板。我认为它符合您对顶部面板的期望。

public GridLayoutFrame() {
super("Calculator");
Bottom = new JPanel();
Top = new JPanel();
Top.setLayout(new GridBagLayout()); // Three Rows (first row must
// only show a text field
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;


topButton = new JButton[topButtons.length];

Input.setSize(500, 500);
Input.setEditable(false);
Input.setBackground(Color.WHITE);
Input.setPreferredSize(new Dimension(300, 30));

c.gridwidth = 5;
Top.add(Input, c);
c.gridwidth = 1;


for (int count = 0; count < topButtons.length; count++) {
topButton[count] = new JButton(topButtons[count]);
c.gridx = count % 5;
Top.add(topButton[count], c ); // add button to panel
}

Bottom.setLayout(new GridLayout(5, 5, 10, 10));
buttons = new JButton[names.length];
for (int count = 0; count < names.length; count++)

{
buttons[count] = new JButton(names[count]);
Bottom.add(buttons[count]); // add button to panel
}

add(Top, BorderLayout.NORTH);
add(Bottom,BorderLayout.CENTER);

关于Java将数据放入边框布局中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com