我已经为我正在进行的聊天制作了一个GUI。它已经完成了但是唯一的事情就是在拖动窗口时自动调整大小。我无法找出原因,这是我最后的机会。所以我真的需要你们的帮助!我有点想法
代码在这里:
ClientGUI(String host, int port) {
super("Chat Client");
defaultPort = port;
defaultHost = host;
// The CenterPanel which is the chat room
MessageText = new JTextArea("Welcome to the Chat room\n");
JPanel centerPanel = new JPanel();
MessageText.setWrapStyleWord(true);
MessageText.setLineWrap(true);
centerPanel.setLayout(null);
JScrollPane scrollPane = new JScrollPane(MessageText);
scrollPane.setBounds(0, 0, 584, 486);
getContentPane().add(scrollPane);
MessageText.setEditable(false);
getContentPane().add(centerPanel, BorderLayout.CENTER);
WriteMessage = new JTextField("Write your username here!");
WriteMessage.setBounds(0, 492, 584, 35);
centerPanel.add(WriteMessage);
WriteMessage.setColumns(234);
WriteMessage.setBackground(Color.WHITE);
// the 3 buttons
Login = new JButton("Login");
Login.setBounds(594, 338, 125, 35);
centerPanel.add(Login);
Logout = new JButton("Logout");
Logout.setBounds(594, 469, 125, 35);
centerPanel.add(Logout);
Logout.addActionListener(this);
Logout.setEnabled(false); // you have to login before being able to logout
Online = new JButton("Online");
Online.setBounds(594, 403, 125, 35);
centerPanel.add(Online);
Online.addActionListener(this);
Online.setEnabled(false); // you have to login before being able to Who is in
JLabel PortNumberText = new JLabel("Port Number: ");
PortNumberText.setBounds(594, 83, 144, 20);
centerPanel.add(PortNumberText);
PortNumber = new JTextField("" + port);
PortNumber.setBounds(594, 114, 129, 20);
centerPanel.add(PortNumber);
PortNumber.setHorizontalAlignment(SwingConstants.RIGHT);
JLabel ServerText = new JLabel("Server Address: ");
ServerText.setBounds(594, 21, 240, 20);
centerPanel.add(ServerText);
// the two JTextField with default value for server address and port number
ServerAddress = new JTextField(host);
ServerAddress.setBounds(594, 52, 129, 20);
centerPanel.add(ServerAddress);
Login.addActionListener(this);
WriteMessage.requestFocus();
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(760, 570);
setVisible(true);
}
图片我的意思
答案 0 :(得分:2)
不要使用null布局。不要使用setBounds()。 Swing旨在与布局管理器一起使用。
只有在使用布局管理器时才能调整组件大小。阅读Layout Manager上Swing教程中的部分以获取更多信息和示例。您始终可以使用多个面板,每个面板使用不同的布局管理器,以获得所需的结果。
还遵循Java命名约定。变量名称不应以大写字符开头。一半的时间你的名字是正确的,一半的时间他们没有。保持一致!
答案 1 :(得分:0)
您正在使用Null-Layout(绝对定位),这意味着您必须自己处理与布局相关的所有事情。最好使用LayoutManager
。
答案 2 :(得分:0)
好吧所以我从一开始就制作了一个边框布局,所以我觉得一切都很好,谢谢大家帮忙!看起来不那么专业。所以是的,以后可能会有更多更新:)