我有一个带有GUI窗口的Java完整程序,当我按下最大化按钮到全屏显示我的JTextArea更大时,我想设置这个窗口。 我在我的GUI中使用
public final class Test extends javax.swing.JFrame {
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JLabel label4;
private JLabel label5;
private JTextField field1;
private JTextField field2;
private JTextField field3;
private JButton button1;
private JButton button2;
private JButton button3;
private JButton button4;
private JScrollPane scrollpane;
private JTextArea visualization;
private JComboBox list;
public Program_GUI()
{
this.initialize_graphic_components();
}
public void initialize_graphic_components()
{
this.setTitle("Test Program");
this.setSize(600,400);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.setMinimumSize(new Dimension(600,400));
this.setLayout(null);
this.label2=new JLabel("Username:");
this.label2.setBounds(20,50,120,20);
this.add(label2);
this.field2=new JTextField("");
this.field2.setBounds(20,70,120,20);
this.add(field2);
this.visualization = new JTextArea(420,250);
this.visualization.setEditable(false);
this.scrollpane=new JScrollPane(this.visualization);
this.scrollpane.setBounds(160, 50, 420, 250);
this.add(scrollpane);
............here is the rest program.........
}
这是我的程序的开始,当我按下最大化按钮以使其均匀时,我希望我的窗口伸展到显示器尺寸。
感谢。
答案 0 :(得分:2)
你的问题在这一行:
this.setLayout(null);
您希望您的布局灵活,以响应大小的变化,如果您根本不使用布局,则无法期望这样做。根据我近一个小时前发布的评论,再次说明:
这完全取决于您使用的布局管理器,您没有告诉我们的内容。例如,如果持有JTextArea的JScrollPane由BorderLayout使用BorderLayout.CENTER位置的容器持有,那么当容器展开时它将在所有方向上展开。
阅读layout manager tutorials并使用它们。故事结束。
答案 1 :(得分:1)
所有容器组件都有一个与之关联的布局。布局是将组件放置在容器上的方法。
默认JFrame
有BorderLayout
。 BorderLayout
默认情况下将容器可见区域划分为5个部分。在这五个部分中BorderLayout.CENTER
倾向于将其他部分推到最小宽度/高度,并在没有任何组件添加到这些部分时占据空间。
因此,根据您的要求,您应该将该组件放在BorderLayout.CENTER
部分。
答案 2 :(得分:0)
你需要的东西
JFrame frame = new JFrame("Text") ;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Box box = Box.createHorizontalBox();
JTextArea area = new JTextArea(10,10);
box.add(area);
frame.add(box);