设置大小不适用于java

时间:2011-04-19 09:22:57

标签: java swing

public void start_Gui() {

    JFrame window = new JFrame("Client Program");
    window.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();
    window.setContentPane(panel);
    panel.setLayout(new GridLayout(1,2));

    JLabel leftside = new JLabel();
    leftside.setLayout(new GridLayout(2, 1));

    JTextArea rightside = new JTextArea();
    rightside.setEditable(false);   //add scroll pane.
    rightside.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    rightside.setLayout(new FlowLayout());

    JTextArea client_text_input = new JTextArea();
    client_text_input.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    leftside.add(client_text_input);

    JLabel buttons_layer = new JLabel();
    JButton login = new JButton("Login");
    JButton logout = new JButton("Logout");
    buttons_layer.setBorder(BorderFactory.createLineBorder(Color.BLACK));
    buttons_layer.setLayout(new GridLayout(2, 1));
    buttons_layer.add(login);
    buttons_layer.add(logout);
    leftside.add(buttons_layer);

    panel.add(leftside);
    panel.add(rightside);

    window.setSize(300, 400);
    window.setResizable(false);
    window.setVisible(true);
}

我正在开发一个简单的Java聊天客户端gui应用程序。 (服务器等,由其他人完成)。

这不是一个大项目,但我唯一的问题是无论我尝试调整上述GUI上任何组件的大小,都行不通。

例如:

JTextArea client_text_input = new JTextArea();
client_text_input.setSize(100,200);

不行。

感谢您的帮助。

3 个答案:

答案 0 :(得分:20)

在Swing中,您有两种布局选项:手动执行所有操作或让LayoutManager为您处理。

只有在您不使用setSize()时,才能调用LayoutManager。由于您使用的是GridLayout,因此您必须使用其他方式来指定所需内容。

尝试拨打setPreferredSize()setMinimumSize()

答案 1 :(得分:1)

两件事 - 首先你应该设置scrollpane的preferredSize,但其次,尝试在componentResized处理程序中调整它的大小并不是一种非常有效的技术,因为'resized'事件不是连续的。

检查resizing text area in a JFrame

答案 2 :(得分:1)

setXxxSize(对于ContainersChilds)如果从setSize()(对于TopLayoutContainer)更改为setPreferredSize(),则必须在pack()之前调用setVisible()。 }