java - 非工作paintComponent方法

标签 java jpanel paintcomponent

代码:

import javax.swing.*;
import java.awt.*;

public class firstGUI extends JPanel {

    public static void main(String[] args) {
        JFrame frame =  new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500,500);
        frame.setVisible(true);
    }

    public void paintComponent(Graphics g) {
        Image image = new ImageIcon("dist.jpg").getImage();
        g.drawImage(image,0,0, this);
    }
}

编译完美,但是当我运行它时,它只显示一个表单。没有显示图片(或 paintComponent 中的任何其他操作)。我有什么遗漏的吗?

最佳答案

您的 paintComponent 方法是您的 firstGUI 类(JPanel)的实例方法。问题是您没有创建 firstGUI 的实例并将其添加到框架中。

以下替换 main 方法实例化 firstGUI 并将其添加到框架的 contentPane 中:

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    frame.getContentPane().add(new firstGUI());
    frame.setVisible(true);
}

关于java - 非工作paintComponent方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3223767/

相关文章:

java - 基本的java温度转换器

java - 如何更新 JPanel 中的 JLabel?

java - 我正在制作动画的这个正方形在它后面留下了痕迹,任何人都可以找出原因吗?

java - NoClassDefFoundError Proguard Activity

Java初学者,类构造函数错误,找不到参数

java - 调用 SwingWorker.get( ) 时防止 GUI 卡住

java - 程序运行时保持 JPanel 中的计时器处于 Activity 状态

java - 从 JPanel 中删除最大化、最小化、关闭按钮

Java面板界面

java - PaintComponent 方法运行了 3 次