我尝试使用JFrame创建简单的GUI,代码如下。
package sorting_array_gui;
package sorting_array_gui;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;
public class userwindow extends JFrame {
private static final long serialVersionUID = 1L;
public userwindow() {
super("A Programm to Sort Your Array");
setSize(1000,600);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true);
JPanel p1= new JPanel();
JButton b1= new JButton("Click Here");
p1.add(b1);
JTextField t1= new JTextField();
p1.add(t1);
JLabel l1= new JLabel("This is a Lable");
p1.add(l1);
add(p1,BorderLayout.CENTER);
}
}
当我添加JTextfield时,JPlane行为不端,甚至JButton和JLabel停止了显示。 为什么会这样。
答案 0 :(得分:2)
"当我添加JTextfield时,JPlane行为不端,甚至JButton和JLabel停止了显示。"
我的代码无法解决此问题。但你应该注意以下内容。
setVisible(true);
应该是在添加所有组件之后 的事情。
public userwindow() {
super("A Programm to Sort Your Array");
JPanel p1= new JPanel();
JButton b1= new JButton("Click Here");
p1.add(b1);
JTextField t1= new JTextField();
p1.add(t1);
JLabel l1= new JLabel("This is a Lable");
p1.add(l1);
add(p1,BorderLayout.CENTER);
pack(); <--- PACK frame
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setVisible(true); <--- LAST
}
此外,您应该使用设置列大小的构造函数为文本字段设置大小
JTextField t1 = new JTextField(20);
此外,您应该使用pack()
代替setSize()
。如果你只是pack()
,那么所有应该是可见的,因为所有组件的首选大小都得到尊重。
另请注意,如果您要向JFrame
添加任何其他组件,则需要为每个组件指定BorderLayout
位置,并使用没有位置被多次使用。
请参阅Laying out Components Within a Container