gpt4 book ai didi

java - 我怎样才能让我的标签和文本字段出现在java的边框布局中?

转载 作者:行者123 更新时间:2023-12-02 04:09:15 26 4
gpt4 key购买 nike

如何使 Jtextfiels、Jlabels 和 JtextArea 出现在边框布局中?我想让我的 label1 在北边,textarea 在东边,其余的在西边。问题是它们没有出现,而且我的文本字段似乎被挤压在左边。

这是我的代码:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class ReliefFrame extends JFrame
{
ReliefCenter s = new ReliefCenter("JavaCup");
JPanel row;
JPanel roww;
JPanel rowww;
JPanel rowwww;
JLabel Label1;
JLabel Label2;
JLabel Label3;
JLabel Label4;
JButton[] button=new JButton[5];
JTextField aTextField;
JTextField bTextField;
JTextField cTextField;
JTextArea aTextArea;
public ReliefFrame() {
super("ReliefCenter");
setSize(700, 700);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible( true );
setLayout( new BorderLayout() );
Label1= new JLabel("Welcome to JavaCup Relief Center");
add(Label1);

createNorthPanel();
createEastPanel();
createWestPanel();
createSouthPanel();
createaTextField();
Label2= new JLabel("Relief Good",JLabel.LEFT);
add(Label2);
createbTextField();
Label3= new JLabel("Quantity",JLabel.LEFT);
add(Label3);
createcTextField();
Label4= new JLabel("Unit",JLabel.LEFT);
add(Label4);
createButton();
createBButton();
createCButton();
createDButton();
createEButton();
createTextArea();
add( row, "East" );
add( roww, "West" );
add( rowww, "North");
add( rowwww, "South");
}

private void createNorthPanel()
{
rowww = new JPanel();
rowww.setLayout( new BorderLayout( ) );
}
private void createEastPanel()
{
row = new JPanel();
row.setLayout( new BorderLayout() );
}
private void createWestPanel()
{
roww = new JPanel();
roww.setLayout( new GridLayout(6,1) );
}
private void createSouthPanel()
{
rowwww=new JPanel();
rowwww.setLayout(new GridLayout(1,5));
}
private void createaTextField()
{
aTextField = new JTextField( "" );
roww.add( aTextField );
}

private void createbTextField()
{
bTextField = new JTextField( "" );
roww.add( bTextField );
}

private void createcTextField()
{
cTextField = new JTextField( "" );
cTextField.setHorizontalAlignment(JTextField.LEFT);
roww.add( cTextField );
}
private void createTextArea()
{
aTextArea = new JTextArea("" );
aTextArea.setEditable(false);
row.add(aTextArea);
}

private void createButton()
{
button[0] = new JButton( "Add Good" );
class ButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent ae )
{
String a = aTextField.getText();
String b = bTextField.getText();
String c = cTextField.getText();
int d=Integer.parseInt(b);
s.addNewGood(a,d,c);//
aTextField.setText( "" );
bTextField.setText( "" );
cTextField.setText( "" );
aTextArea.append("Added new good: "+a+"\n");
}
}
button[0].addActionListener( new ButtonListener() );
rowwww.add( button[0] );
}
private void createBButton()
{
button[1] = new JButton( "Receive Goods" );
class ButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent ae )
{
String a = aTextField.getText();
String b = bTextField.getText();
int d=Integer.parseInt(b);
s.receiveGoods(a,d);//
aTextField.setText( "" );
bTextField.setText( "" );
aTextArea.append("Received "+a+":"+d+"\n");
}
}
button[1].addActionListener( new ButtonListener() );
rowwww.add( button[1] );
}
private void createCButton()
{
button[2] = new JButton( "Release Packs" );
class ButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent ae )
{
String a = bTextField.getText();
int b=Integer.parseInt(a);
s.releasePacks(b);
bTextField.setText( "" );
}
}
button[2].addActionListener( new ButtonListener() );
rowwww.add( button[2] );
}
private void createDButton()
{
button[3] = new JButton( "Packs Released" );
class ButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent ae )
{
int a=s.getPackCount();
aTextArea.append("JavaCup has released"+a+"packs. \n");
}
}
button[3].addActionListener( new ButtonListener() );
rowwww.add( button[3] );
}
private void createEButton()
{
button[4] = new JButton( "Inventory Report" );
class ButtonListener implements ActionListener
{
public void actionPerformed( ActionEvent ae )
{

aTextArea.append("===INVENTORY===\n");
s.printInventory();
aTextArea.append("===============\n");

}
}
button[4].addActionListener( new ButtonListener() );
rowwww.add( button[4] );
}
public static void main(String[] arguments) {
ReliefFrame c = new ReliefFrame();
}
}

最佳答案

BorderLayout 基于 preferredSize 工作。因此,请尝试以下方法进行测试:

    ...
add( row, BorderLayout.EAST );
add( roww, BorderLayout.WEST );
add( rowww, BorderLayout.NORTH);
add( rowwww, BorderLayout.SOUTH);

row.setPreferredSize(new Dimension(100,100));
roww.setPreferredSize(new Dimension(100,100));
rowww.setPreferredSize(new Dimension(100,100));
rowwwww.setPreferredSize(new Dimension(100,100));
}

此外,您在未指定约束的情况下添加标签,因此 LayoutManager 不知道该怎么做。

所以,尝试一下你的标签:

labelPanel = new JPanel();
labelPanel.setLayout(new GridLayout());

Label1= new JLabel("Welcome to JavaCup Relief Center");
labelPanel.add(Label1);

createNorthPanel();
createEastPanel();
createWestPanel();
createSouthPanel();
createaTextField();
Label2= new JLabel("Relief Good",JLabel.LEFT);
labelPanel.add(Label2);
createbTextField();
Label3= new JLabel("Quantity",JLabel.LEFT);
labelPanel.add(Label3);
createcTextField();
Label4= new JLabel("Unit",JLabel.LEFT);
labelPanel.add(Label4);

add(labelPanel, BorderLayout.CENTER);

请注意,我在 JPanel 中放置了 GridLayout。您可以使用最适合您的 LayoutManager。我只是选择了最简单的示例

关于java - 我怎样才能让我的标签和文本字段出现在java的边框布局中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957737/

26 4 0