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);
不行。
感谢您的帮助。
答案 0 :(得分:20)
在Swing中,您有两种布局选项:手动执行所有操作或让LayoutManager
为您处理。
只有在您不使用setSize()
时,才能调用LayoutManager
。由于您使用的是GridLayout
,因此您必须使用其他方式来指定所需内容。
答案 1 :(得分:1)
两件事 - 首先你应该设置scrollpane的preferredSize,但其次,尝试在componentResized处理程序中调整它的大小并不是一种非常有效的技术,因为'resized'事件不是连续的。
答案 2 :(得分:1)
但setXxxSize
(对于ContainersChilds)如果从setSize()
(对于TopLayoutContainer)更改为setPreferredSize()
,则必须在pack()
之前调用setVisible()
。 }