java - 使用以下代码输出错误

标签 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();

    }
}

这是怎么回事?

最佳答案

宽度和高度错误。应该是

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

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

关于java - 使用以下代码输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17627538/

相关文章:

java - 如何将 JButton 放置在 JTable 下?

python - 在 Tkinter 中打开新窗口会卡住程序(python 3.6)

java - Vaadin 中带 slider 的水平按钮栏

java - 将按钮组添加到 GUI 或在没有 GUI 的情况下一次只选择一个按钮

java - 在应用程序开始时获取 HttpSessionEventPublisher 异常

java - Websphere 7.X。 JMX,如何启用JConsole中的所有操作?

java - 如何将值(JTextField 和 JXDatePicker)存储到 MySQL 数据库中?

Java 定时器在不应该重复的时候重复

java - 如何在java中转换wav文件

swing - JFrame Container 内JPanel 的宽度和高度为0,为什么?