我尝试实现一个简单的GUI应用程序,让一个类扩展JPanel,然后将它添加到一个框架并添加一个按钮,但是当我点击按钮时没有任何反应。出了什么问题?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class dup extends JPanel {
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.green);
g2d.fillRect(0, 0, this.WIDTH, this.HEIGHT);
System.out.println("inside paint component class");
}
}
public class drawing implements ActionListener {
JFrame frame;
dup d1;
public static void main(String args[]) {
drawing d2 = new drawing();
d2.go();
}
public void go() {
frame = new JFrame();
JButton button = new JButton("click me");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
d1 = new dup();
button.addActionListener(this);
frame.getContentPane().add(BorderLayout.WEST, button);
frame.getContentPane().add(BorderLayout.CENTER, d1);
frame.setSize(300, 300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
frame.repaint();
}
}
这有什么问题?
答案 0 :(得分:1)
宽度和高度错误。它应该是
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
您使用的是来自ImageObserver
类的常量,而不是组件的宽度和高度属性。