如何在java中使标签和文本字段显示在borderlayout中?
如何使我的Jtextfiels、Jlabels和JtextArea显示在borderlayout中?我想让我的label1在北部,textarea在东部,其余的在西部。问题是它们没有出现,我的textfield似乎被挤在了左侧 这是我的密码:如何在java中使标签和文本字段显示在borderlayout中?,java,swing,jframe,jpanel,border-layout,Java,Swing,Jframe,Jpanel,Border Layout,如何使我的Jtextfiels、Jlabels和JtextArea显示在borderlayout中?我想让我的label1在北部,textarea在东部,其余的在西部。问题是它们没有出现,我的textfield似乎被挤在了左侧 这是我的密码: import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*; public class ReliefFrame extends JFrame {
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
。对于示例,我只选择了最简单的一个您有几个问题:
add(createNorthPanel(), BorderLayout.NORTH);
add(createWestPanel(), BorderLayout.WEST);
...
pack();
setVisible( true );
public JPanel createNorthPanel()
{
JPanel panel = new JPanel();
JLabel quantity = new JLabel("Quantity");
panel.add(quantity);
JLabel unit = new JLabel("Unit");
panel.add( unit );
return panel;
}
createNorthPanel()的代码可能类似于:
add(createNorthPanel(), BorderLayout.NORTH);
add(createWestPanel(), BorderLayout.WEST);
...
pack();
setVisible( true );
public JPanel createNorthPanel()
{
JPanel panel = new JPanel();
JLabel quantity = new JLabel("Quantity");
panel.add(quantity);
JLabel unit = new JLabel("Unit");
panel.add( unit );
return panel;
}
现在,创建一个面板的所有逻辑都包含在一个地方
您也不应该扩展JFrame,而是将组件添加到面板,然后将面板添加到框架。我建议您阅读关于工作代码的Swing教程,该教程演示了这种方法 “救济中心”类别代码?米恩斯:你怎么画的?谢谢你的回答。Jlabel在位置上是否与Jtextfield相同?从容器的角度来看,它们都是
JComponent
,在您的例子中是ReliefFrame
内容窗格。你的问题是你在添加标签时没有申报违禁品。我将编辑我的答案,以便更好地举例说明