首页 > 解决方案 > 将图形添加到 JPanel

问题描述

我正在尝试将图形添加到 JPanel。我有用于创建矩形并将其放在框架上的工作代码。现在由于某种原因,当我尝试将它添加到 JPanel 时,我什么也没看到。我不确定我是否做错了什么,或者将图形添加到 JFrame 的过程不适用于添加到 JPanel。

这是不起作用的代码:

控制板

import java.awt.Component;
import java.awt.Container;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.FlowLayout;

public class Window2 extends JFrame {
    public Window2() {
        Container panel = this.getContentPane();
        panel.setLayout(new FlowLayout());
        panel.setSize(1000,1000);

        ExampleComponent2 dc = new ExampleComponent2();
        panel.add(dc);

        setSize(800,600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);       
    }

    public static void main(String[] args){
        Window window = new Window();
    }   
}

绘图组件类

import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
import java.awt.Rectangle;

public class ExampleComponent2 extends JComponent {
    public void paintComponent(Graphics g){
        Graphics2D g2 = (Graphics2D) g;

        Rectangle rect1 = new Rectangle(20,20,40,40);
        g2.draw(rect1);
    }
}

这是有效的代码:

主班

import javax.swing.JFrame;
import java.awt.Rectangle;

public class Main{
    public static void main(String[] args){
        JFrame window = new JFrame();
        window.setSize(650,500);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setVisible(true);

        ExampleComponent dc = new ExampleComponent();
        window.add(dc);
    }   
}

标签: java

解决方案


ExampleComponent2 dc = new ExampleComponent2();
dc.setPreferredSize(new Dimension(100, 100));
panel.add(dc);

然后它出现在我面前。


推荐阅读