使用以下代码输出错误

时间:2013-07-13 06:14:12

标签: java swing user-interface actionlistener

我尝试实现一个简单的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();

    }
}

这有什么问题?

1 个答案:

答案 0 :(得分:1)

宽度和高度错误。它应该是

g2d.fillRect(0, 0, this.getWidth(), this.getHeight());

您使用的是来自ImageObserver类的常量,而不是组件的宽度和高度属性。