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