Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 Swing代码编译错误“;失踪&引用;_Java_Swing_Compiler Errors - Fatal编程技术网

Java Swing代码编译错误“;失踪&引用;

Java Swing代码编译错误“;失踪&引用;,java,swing,compiler-errors,Java,Swing,Compiler Errors,如何解决此编译错误?请注意,我对Swing是新手 Eclipse说“Missing”;但当我把它放进去时,它突出了;再说一次“失踪”。它一直这样做。有什么帮助吗 它位于标有以下内容的行上: // Eclipse says 'missing ;' on this line. 您的代码中存在许多问题: 如合同中所述 作者@HovercraftFullOfEels: 您的addActionListener方法上的右括号也不匹配。同样,良好的代码格式将帮助您看到这一点 您正在扩展Frame(可能您正

如何解决此编译错误?请注意,我对Swing是新手

Eclipse说“Missing”;但当我把它放进去时,它突出了;再说一次“失踪”。它一直这样做。有什么帮助吗

它位于标有以下内容的行上:

// Eclipse says 'missing ;' on this line.

您的代码中存在许多问题:

  • 如合同中所述 作者@HovercraftFullOfEels:

  • 您的addActionListener方法上的右括号也不匹配。同样,良好的代码格式将帮助您看到这一点

  • 您正在扩展
    Frame
    (可能您正在尝试扩展
    JFrame
    ) 并创建一个
    JFrame
    对象,选择要使用的对象 (建议创建对象而不是扩展,因为如果 你扩展了一个
    JFrame
    你的类是一个
    JFrame
    并且不能被扩展 包括在其他地方,你不会改变它的功能 无论是这样,都不需要扩展)

  • 您正在创建一个私有静态方法

    private static void setDefaultCloseOperation(int exitOnClose) {}
    
  • 该方法应该是公共的,并且属于
    JFrame
    类,我想您的IDE是在扩展
    Frame
    而不是
    JFrame
    时编写的

    Frame
    属于,而
    JFrame
    属于,所以它们不一样

  • 您正在创建窗口和
    main
    方法而不是构造函数

  • 您正在将组件添加到
    容器
    ,但从未将该容器添加到
    JFrame
    ,因此需要调用

    frame.setContentPane(c);
    
  • 因此,您的代码应该如下所示:

    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.*;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    
    public class GUI {
        JFrame frame;
        public GUI() {
            frame = new JFrame("Hello World - YaBoiAce");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            frame.setSize(500, 300);
    
            // Layout //
            frame.setLayout(new BorderLayout());
    
            // Swing Component //
            final JTextArea textarea = new JTextArea();
            JButton jbutton = new JButton("Click me");
    
            frame.add(textarea,BorderLayout.CENTER);
            frame.add(jbutton, BorderLayout.SOUTH);
    
            // Add Component to content pane
            Container c = frame.getContentPane();
    
            c.add(textarea,BorderLayout.CENTER);
            c.add(jbutton, BorderLayout.SOUTH);
    
            frame.setContentPane(c);
    
            // Action Listener
            jbutton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    textarea.append("Hello");
                } // Eclipse says 'missing ;' on this line.
            });
        }
        public static void main(String[] args) {
            SwingUtilities.invokeLater(() -> new GUI());
        }
    }
    

    你上面提到的几个新手错误表明你可能还不知道如何最好地使用这个网站。请查看,以及部分,以获取有关如何改进您的问题和增加您获得体面帮助的机会的更多信息。首先,将所有相关代码与您的问题一起发布在这里,而不是链接中。另一方面,请在提问中投入一些精力——解释你的代码和你的问题,以便我们能够轻松理解两者。你应该将大部分代码从静态main方法中提取出来,放到类中,你会想阅读教程,关于如何创建类的Swing教程和基本Java教程。addActionListener方法的右括号也不匹配。同样,良好的代码格式将帮助您看到这一点。另外,永远不要向坏代码添加新代码——在尝试向程序添加更多代码之前,一定要解决所有编译问题。@AndrewThompson完成后,这篇文章现在改进了很多哦,OP也应该更改问题的标题,因为它没有太多地说明问题problem@HovercraftFullOfEels谢谢,我忘了把节目放在EDT上,我把注意力集中在其他细节上,但我忽略了这一点。这是一个非常好的答案。1+与@HovercraftFullOfEels:)@andrethompson的评论一样,从你们两人那里得知“这是一个非常好的答案”,我感到很荣幸,谢谢你,通过阅读你给出的答案,我学到了很多:)
    frame.setContentPane(c);
    
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.*;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.SwingUtilities;
    
    public class GUI {
        JFrame frame;
        public GUI() {
            frame = new JFrame("Hello World - YaBoiAce");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            frame.setSize(500, 300);
    
            // Layout //
            frame.setLayout(new BorderLayout());
    
            // Swing Component //
            final JTextArea textarea = new JTextArea();
            JButton jbutton = new JButton("Click me");
    
            frame.add(textarea,BorderLayout.CENTER);
            frame.add(jbutton, BorderLayout.SOUTH);
    
            // Add Component to content pane
            Container c = frame.getContentPane();
    
            c.add(textarea,BorderLayout.CENTER);
            c.add(jbutton, BorderLayout.SOUTH);
    
            frame.setContentPane(c);
    
            // Action Listener
            jbutton.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    textarea.append("Hello");
                } // Eclipse says 'missing ;' on this line.
            });
        }
        public static void main(String[] args) {
            SwingUtilities.invokeLater(() -> new GUI());
        }
    }