Java 为什么';这个GridBagLayout代码不起作用吗?

Java 为什么';这个GridBagLayout代码不起作用吗?,java,swing,layout,gridbaglayout,Java,Swing,Layout,Gridbaglayout,我有下面的代码 类似的代码也可以工作。还有一位朋友说它应该会起作用。但事实并非如此 有人有线索吗 谢谢 问题描述: 所有的东西都很小,而不是绘制所需的布局。( 您没有为滚动窗格设置任何视图,因此滚动窗格无法确定其首选大小 您没有在按钮上设置文本,因此它只根据边框的要求计算按钮的大小 不要弄乱setXxxSize,您的ChatGUI应该不知道它可能需要占用的可视大小 你调试过你的程序吗?因为没有编译器错误,这很可能是一个逻辑错误,没有。所以你没有调试你的程序。你也不需要编译器错误来调试。非常有用,

我有下面的代码

类似的代码也可以工作。还有一位朋友说它应该会起作用。但事实并非如此

有人有线索吗

谢谢

问题描述: 所有的东西都很小,而不是绘制所需的布局。(

  • 您没有为滚动窗格设置任何视图,因此滚动窗格无法确定其首选大小
  • 您没有在按钮上设置文本,因此它只根据边框的要求计算按钮的大小
  • 不要弄乱
    setXxxSize
    ,您的
    ChatGUI
    应该不知道它可能需要占用的可视大小

  • 你调试过你的程序吗?因为没有编译器错误,这很可能是一个逻辑错误,没有。所以你没有调试你的程序。你也不需要编译器错误来调试。非常有用,谢谢。调试器怎么会告诉我我需要知道才能看到misakte?例如,它可以帮助你在逻辑上一步一步地进行调试啊,你得一步一步地修改你的程序,直到你能更清楚地看到发生的错误为止。@Mad教授:是的,这就是轨迹。我明天要检查,现在要迟到了。但这很有道理,所以我只能说:啊!我可能会想到这个。。。谢谢!To 3):大小将由另一个类设置,该类将chatGUI作为主JFrame内的窗格调用。无论如何:谢谢!
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Image;
    import javax.swing.JButton;
    import javax.swing.JColorChooser;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    
    public class ChatGUI extends JPanel {
    
        private static final long serialVersionUID = -3069354983197916315L;
        private Image imgBackground;
    
        private GridBagLayout gblChat;
        private GridBagConstraints constraintsChat;
    
        private JPanel jPanelChat;
        private JList clientList;
    
        private JColorChooser font_chooser;
    
        private JButton privateMessage_button;
        private JButton sendMessage_button;
    
        private JScrollPane OutputOfChatMessages;
        private JScrollPane ShowConnectedClients;
        private JScrollPane InputOfChatMessage;
    
        public static void main(String[] args) {
    
            JFrame jf = new JFrame();
    
            ChatGUI cg1 = new ChatGUI(500, 500);
    
            jf.add(cg1);
    
            jf.setExtendedState(Frame.MAXIMIZED_BOTH);
            jf.setVisible(true);
        }
    
        /**
         * Layout
         */
        public ChatGUI(int width, int height) {
    
            // used for scaling
            this.setMinimumSize(new Dimension(width / 2,
                    height / 4));
            this.setPreferredSize(new Dimension(width / 2,
                    height / 4));
    
            jPanelChat = new JPanel();
            gblChat = new GridBagLayout();
            constraintsChat = new GridBagConstraints();
    
            this.setLayout(gblChat);
            this.setBackground(Color.LIGHT_GRAY);
            constraintsChat.fill = GridBagConstraints.BOTH;
    
            /**
             * Panel 1 = OutputOfChatMessages
             */
            OutputOfChatMessages = new JScrollPane();
    
            constraintsChat.gridx = 0;
            constraintsChat.gridy = 0;
            constraintsChat.gridwidth = 1;
            constraintsChat.gridheight = 1;
            gblChat.setConstraints(OutputOfChatMessages, constraintsChat);
    
            this.add(OutputOfChatMessages);
    
            /**
             * Panel 2 = ShowConnectedClients
             */
            ShowConnectedClients = new JScrollPane();
    
            constraintsChat.gridx = 1;
            constraintsChat.gridy = 0;
            constraintsChat.gridwidth = 4;
            constraintsChat.gridheight = 4;
            gblChat.setConstraints(ShowConnectedClients, constraintsChat);
    
            this.add(ShowConnectedClients);
    
            /**
             * Panel 3 = InputOfChatMessage
             */
            InputOfChatMessage = new JScrollPane();
    
            constraintsChat.gridx = 0;
            constraintsChat.gridy = 5;
            constraintsChat.gridwidth = 2;
            constraintsChat.gridheight = 2;
            gblChat.setConstraints(InputOfChatMessage, constraintsChat);
    
            this.add(ShowConnectedClients);
    
            /**
             * Panel 4 = privateMessage_button
             */
            privateMessage_button = new JButton();
    
            constraintsChat.gridx = 1;
            constraintsChat.gridy = 6;
            constraintsChat.gridwidth = 1;
            constraintsChat.gridheight = 1;
            gblChat.setConstraints(privateMessage_button, constraintsChat);
    
            this.add(privateMessage_button);
    
            /**
             * Panel 5 = sendMessage_button
             */
            sendMessage_button = new JButton();
    
            constraintsChat.gridx = 1;
            constraintsChat.gridy = 7;
            constraintsChat.gridwidth = 1;
            constraintsChat.gridheight = 1;
            gblChat.setConstraints(sendMessage_button, constraintsChat);
    
            this.add(sendMessage_button);
    
            this.validate();
    //this.revalidate();
    
        }
    }