【发布时间】:2016-04-28 23:10:35
【问题描述】:
我尝试在 Java 中使用 Swing 放置一个文本字段和一个按钮和标签。我成功添加了标签和按钮,但是如果我尝试添加文本字段,孔框是空白的,所以什么都没有显示,而不是甚至按钮或标签。 我做错了什么?
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
public class SwingPartOne extends JFrame {
public static void main(String[] args) {
new SwingPartOne();
}
public SwingPartOne(){
this.setSize(800,800);
this.setLocationRelativeTo(null);
this.setVisible(true);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dim = tk.getScreenSize();
int xPos = (dim.height / 2) - (this.getHeight() / 2);
int yPos = (dim.width / 2) - (this.getWidth() / 2);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("First Jframe");
JPanel thePanel = new JPanel();
JLabel label1 = new JLabel("Some random text .");
label1.setText("New text.");
label1.setToolTipText("Surprize!");
JButton thebutton1 = new JButton("BOOM!");
JTextField textField = new JTextField("Some text" , 15);
textField.setColumns(5);
textField.setSize(200,200);
textField.setText("Some random text");
thePanel.add(label1);
thePanel.add(textField);
thePanel.add(thebutton1);
this.add(thePanel);
}
}
【问题讨论】:
-
在构造函数的末尾调用
this.setVisible(true),这样它就可以validate。另外,其他一些注意事项:1)textField.setSize(200,200);不会做太多,而是覆盖它的getPreferredSize方法(仅当您确实需要时)。 2) 要使框架居中,您也可以简单地调用setLocationRelativeTo(null)。无需计算xPos和yPos -
Beware
setResizable(false).