Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实现与图片相似的gui?_Java_Swing_User Interface_Awt - Fatal编程技术网

Java 实现与图片相似的gui?

Java 实现与图片相似的gui?,java,swing,user-interface,awt,Java,Swing,User Interface,Awt,我的计划是得到一个类似的输出,但出于某种原因,我只得到南面板 我的逻辑是要有一个主面板,北-中-南 在北部,我将放置Jlabel和Textfield,并将其向右对齐 在中心我会让它空着 在南部,我将在第一行中添加一个BoxLayout y轴,另一个面板具有居中的BoxLayout 另一个BoxLayour在South BoxLayour行的第二行中,我将添加另一个BoxLayout并将其向左对齐 这是我的密码: public static void main(String args[])

我的计划是得到一个类似的输出,但出于某种原因,我只得到南面板

我的逻辑是要有一个主面板,北-中-南

  • 在北部,我将放置Jlabel和Textfield,并将其向右对齐
  • 在中心我会让它空着
  • 在南部,我将在第一行中添加一个BoxLayout y轴,另一个面板具有居中的BoxLayout
另一个BoxLayour在South BoxLayour行的第二行中,我将添加另一个BoxLayout并将其向左对齐

这是我的密码:

 public static void main(String args[]) {

        EventQueue.invokeLater(new Runnable() {
            @Override


        public void run() {
                JFrame frame = new JFrame();
            frame.setSize(new Dimension(500,600));
            JPanel MainPanel = new JPanel();
frame.add(MainPanel);

            JPanel NorthPanel = new JPanel(); //upper panel to add boxx layout and inside it 2 panls
            JPanel ToPanel = new JPanel(); //inside north
            JPanel SubjectPanel = new JPanel(); //inside north

            NorthPanel.setLayout(new BoxLayout(NorthPanel, BoxLayout.Y_AXIS));
            MainPanel.add(NorthPanel, BorderLayout.NORTH);


            JLabel SubjectLabel = new JLabel("Subject");  SubjectLabel.setAlignmentX(Component.RIGHT_ALIGNMENT);
            JTextField  SubjectTextField = new JTextField(20); SubjectTextField.setAlignmentX(Component.RIGHT_ALIGNMENT);

            JLabel ToLabel = new JLabel("To");  ToLabel.setAlignmentX(Component.RIGHT_ALIGNMENT);
            JTextField  ToTextField = new JTextField(20); ToTextField.setAlignmentX(Component.RIGHT_ALIGNMENT);
            ToPanel.add(ToLabel);
            ToPanel.add(ToTextField);

            ToPanel.add(SubjectLabel);
            ToPanel.add(SubjectTextField);
            NorthPanel.add(ToPanel);

            JPanel CenterPanel = new JPanel(); //Center panel  blank
            MainPanel.add(CenterPanel, BorderLayout.CENTER);
            ///
            JPanel SouthPanel = new JPanel();
            NorthPanel.setLayout(new BoxLayout(NorthPanel, BoxLayout.Y_AXIS));

            JPanel FontPanels = new JPanel();
            FontPanels.setLayout(new BoxLayout(FontPanels, BoxLayout.PAGE_AXIS));
            FontPanels.add(new JButton("Bold"));
            FontPanels.add(new JButton("Italic"));
            FontPanels.add(new JButton("Underlined"));
            FontPanels.add(new JButton("Undo"));
            FontPanels.add(new JButton("Redo"));
            FontPanels.setAlignmentX(Component.CENTER_ALIGNMENT);

            JPanel OptionPanel = new JPanel();
            OptionPanel.setLayout(new BoxLayout(OptionPanel, BoxLayout.PAGE_AXIS));

            FontPanels.setLayout(new BoxLayout(FontPanels, BoxLayout.PAGE_AXIS));

            OptionPanel.add(new JButton("Send"));

            OptionPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
                    SouthPanel.add(FontPanels);
                    SouthPanel.add(OptionPanel);

            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);

        }

    });

    }

您没有向JFrame添加任何内容,因此它自然会显示一个空白的JFrame

要显示每个组件,您需要执行
frame.add(组件)


我将框架的布局管理器留给您。

在我看来,您好像忘记了将组件添加到框架中。即使将其添加到框架中,输出仍然不同(1-)变量名称不应以大写字符开头。代码很难阅读,因为所有变量都像类名一样突出显示。如果您希望人们帮助确保代码易于阅读。1)“实现与图片相似的gui?”为什么?太可怕了。
To
字段应该比
Subject
字段短&字段和标签都需要一些空白。文本区域(创建和添加的内容在哪里,顺便说一下?)需要一个滚动窗格。下一行按钮可以,但最后一行也需要空白。2) 代替
frame.setSize(新尺寸(500600))
(这比猜测好不了多少)更改
frame.setVisible(true)
frame.pack();frame.setVisible(true)我不能只添加“frame.add(MainPanel);”吗?因为我稍后会添加所有内容,理论上你是正确的-唯一确定的方法是你测试它。最好从Swing开始,一次添加一个组件。