微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我尝试了所有方法,但似乎无法在 jframe 中绘制某些内容

如何解决我尝试了所有方法,但似乎无法在 jframe 中绘制某些内容

我是 Java 新手,我需要帮助才能使其正常工作。我尝试了paintComponent、super 等等。我不明白我做错了什么。我只是想制作一个简单的圆圈。我第一次尝试了不同的课程,但现在我只回到了一个

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JPanel{
    
    private static final long serialVersionUID = 1L;
    private JFrame frame;
    private JPanel panel;

    public Main() {
        
        frame = new JFrame();
        panel = new JPanel();
        
        frame.add(panel);
        frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("shotergame");
        
        panel.setPreferredSize(new Dimension(1000,600));
        
        frame.pack();
        frame.setVisible(true);
        frame.setLocationRelativeto(null);
        
    }
    
    @Override
    public void paint(Graphics g) {
        
        Graphics2D g2d = (Graphics2D) g;
        
        g2d.setColor(Color.RED);
        g2d.drawoval(100,100,50,50);
        g2d.filloval(100,50);
        
    }

    public static void main(String[] args) {
        
        new Main();

    }
    
    

}

解决方法

Main 是要添加到 JPanelJFrame
panel 实例不执行任何操作,您应该删除它并在构造函数中使用 this 实例。

public class Main extends JPanel {
    private static final long serialVersionUID = 1L;
    private JFrame frame;

    public Main() {
        frame = new JFrame();
        frame.add(this); // Add "this" instance
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("shotergame");
        
        // Set preferred size to "this" instance
        setPreferredSize(new Dimension(1000,600));
        
        frame.pack();
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
    }

    (...)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。