2

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

    }
}

这有什么问题?

4

1 回答 1

1

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

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

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

于 2013-07-13T06:28:56.137 回答