我是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();
}
}
有人可以告诉我哪里出错了吗?我似乎有错误的布局语法。
答案 0 :(得分:3)
无论我给对象赋予什么界限,它们总是出现在一个对象中 线。
这可能是因为JPanel
:FlowLayout的默认布局管理器。另一方面,Swing旨在与布局管理器一起使用,并且不鼓励使用诸如setBounds(...)
,setLocation(...)
和setSize(...)
之类的方法。请参阅Laying out Components within a Container课程。