如何解决此编译错误?请注意,我是Swing的新手。
package gui;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class GUI extends Frame {
public static void main(String[] args) {
JFrame frame = new JFrame("Hello World - YaBoiAce");
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");
// Add Component to content pane
Container c = frame.getContentPane();
c.add(textarea,BorderLayout.CENTER);
c.add(jbutton, BorderLayout.SOUTH);
// Action Listener
jbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textarea.append("Hello");
} // Eclipse says 'missing ;' on this line.
}
private static void setDefaultCloseOperation(int exitOnClose) {
}
}
Eclipse说“失踪”;但当我把它放进去时,它突出了;说“想念;”再次。它继续这样做。有什么帮助吗?
它位于标有:
的行上// Eclipse says 'missing ;' on this line.
答案 0 :(得分:2)
您的代码中存在许多问题:
您的addActionListener方法也不匹配右括号。再好的代码格式化将帮助您看到这一点。
// Action Listener
jbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textarea.append("Hello");
} // Eclipse says 'missing ;' on this line.
}); //HERE YOU NEED TO ADD: );
您正在扩展Frame
(也许您试图扩展JFrame
)
并创建一个JFrame
对象,选择您要使用的对象
(建议创建对象而不是扩展,因为如果
你延长JFrame
你的班级是 JFrame
而不能
包含在其他地方,你不会改变它的功能
要么这样,就不需要延长了。
您正在创建私有静态方法
private static void setDefaultCloseOperation(int exitOnClose) {}
该方法应该是公开的并且属于JFrame
类,我猜你的IDE写了当你扩展Frame
而不是JFrame
时。
Frame
属于java.awt
而JFrame
属于javax.swing
所以,它们不一样。
您正在main
内创建窗口和每个组件
方法而不是构造函数
您已将组件添加到Container
,但从未将该容器添加到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());
}
}