繁体   English   中英

为什么图形没有显示在我的JFrame / JPanel上?

[英]Why is graphics not showing on my JFrame / JPanel?

当我运行这段代码时。 结果是一个带有名称的窗口。 完全空白。 我尝试编辑背景色和添加图形(矩形)等,但相同的结果不断发生。

问题:这最终会变成窗口上的白色屏幕。 没有图形或背景色。 即使我将其添加到面板并添加了面板。 我该如何解决?

Main.java

package ball.tec.main;

import javax.swing.JFrame;
import ball.tec.frame.Frame;

public class Main {
    public static void main(String[] args) {
        String Version = "0.1.2";
        Frame f = new Frame();
        f.setVisible(true);
        f.add();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setResizable(false);
        f.setSize(1500, 1000);
        f.setTitle("RedBall V: " + Version);
    }
}

框架

    package ball.tec.frame;

    import java.awt.Color;
    import java.awt.Graphics;
    import javax.swing.JFrame;
    import javax.swing.JPanel;

    public class Frame extends JFrame{
        private static final long serialVersionUID = 1L;
        public boolean debug = false;

        //Creating panel object
        JPanel panel = new JPanel();

        //Graphics displayed
        public void paintComponent(Graphics g) {

        //Firstly Nothing pops up
        g.setColor(Color.RED);
        g.drawRect(20, 40, 10, 10);

        //And this doesn't work.
        this.setBackground(Color.RED);
    }

    //Add everything to 'panel'
    public void add() {
    add(panel);

    //Even if I put it here it doesn't work ;-;
    this.setBackground(Color.RED);
    this.pack();
 }
}

您无需在JFrame使用paintComponent() 您可能打算做的是创建第三类,扩展了JPanel 在那里添加您的paintComponent()

public class MyPanel extends JPanel {
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.RED);
        g.drawRect(20, 40, 10, 10);
        this.setBackground(Color.RED);
    }
}

f.add(new MyPanel());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM