java - 将图形添加到 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);
}
}
解决方案
ExampleComponent2 dc = new ExampleComponent2();
dc.setPreferredSize(new Dimension(100, 100));
panel.add(dc);
然后它出现在我面前。
推荐阅读
- python - 使用正则表达式提取数字
- python - Python:如何沿给定的编号轴获取单位向量?
- mysql - 如何使用 Spring Boot 从选择查询中获取结果
- azure - 如何在新门户 Azure 中的 Azure Active Directory 中为自己授予权限?缺少“授予权限”按钮
- azure - 使用 Azure 应用程序网关的认证链中的问题
- ios - Xcode 11 - 实例方法...与另一个类别的相同方法冲突
- sql - SQL 子查询和列命名问题
- python - 组合 2 个数据帧以生成一个包含重复值的文件
- python - 将不同格式的json转换为csv
- react-native - 格式数字功能仅在我调试 React Native Expo 时才有效