实体的输出布局与预期不符

时间:2014-10-04 16:54:41

标签: java swing jpanel layout-manager

我是Java的初学者,特别是在GUI设计领域。我创建了一个简单的Java Swing接口来接受来自用户的字符串并使用JOptionPane显示它(ActionListener尚未实现。)

我面临的主要问题是输出中对象的对齐。无论我给对象赋予什么界限,它们总是出现在一行中。此外,有时,输出框架将完全没有显示任何内容。多次运行后,它最终会显示对象,但不会出现在我预期的布局中。

这是我的代码:

package guiapp;

import javax.swing.*;
import java.awt.*;

public class GUIApp {

private static JFrame frame;
private static JPanel panel;
private static JLabel label;
private static JTextField text;
private static JButton click;

public static void CreateGUI(){
frame = new JFrame("Hello to NetBeans!");
frame.setSize(750, 750);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel = new JPanel();
panel.setBackground(Color.BLUE);

label = new JLabel("Enter a string: ");
label.setBounds(50,35,150,40);
label.setVisible(true);

text = new JTextField();
text.setBounds(250,35,150,40);
text.setVisible(true);

click = new JButton("Click here!");
click.setBounds(150,80,150,40);
click.setVisible(true);

panel.add(text);
panel.add(label);
panel.add(click);


frame.add(panel);
frame.setVisible(true);

}

public static void main(String[] args) {
    CreateGUI();
}

}

有人可以告诉我哪里出错了吗?我似乎有错误的布局语法。

1 个答案:

答案 0 :(得分:3)

  

无论我给对象赋予什么界限,它们总是出现在一个对象中   线。

这可能是因为JPanelFlowLayout的默认布局管理器。另一方面,Swing旨在与布局管理器一起使用,并且不鼓励使用诸如setBounds(...)setLocation(...)setSize(...)之类的方法。请参阅Laying out Components within a Container课程。