java - PaintComponent 似乎没有接到电话或显示
问题描述
我的问题很简单:我有这个小程序,它只是没有显示我正在尝试制作的红色框:
主要的
public class Main {
public static void main(String[] args) {
Affichage a = new Affichage();
a.setVisible(true);
}
}
附言:
import java.awt.*;
import javax.swing.*;
public class Affichage extends Frame{
public Affichage(){
setTitle("Exo 1 : Galerie");
setSize(1120,560);
Graphique graph = new Graphique();
this.add(graph);
}
}
图形:
import javax.swing.*;
import java.awt.*;
public class Graphique extends JComponent {
@Override
public void paintComponents(Graphics g) {
super.paintComponents(g);
Graphics pinceau = g.create();
pinceau.setColor(Color.RED);
pinceau.fillRect(100, 100, 200, 200);
System.out.println("test");
}
}
我敢打赌这是嘲笑,但我找不到它是什么,帮帮我。PS:是的,测试也没有打印出来
解决方案
实际上,不要扩展JFrame
,因为这是不好的做法。只是做一个实例。绘制、扩展JPanel
和覆盖paintComponent
.
JFrame f = new JFrame();
f.add(new MyPanel());
class MyPanel extends JPanel {
// other stuff
public void paintComponent(Graphics g) {
super.paintComponent(g);
// painting stuff.
}
}
并记住不要混合Swing
和AWT
组件。
推荐阅读
- java - 如何进行枚举聚合?
- python - 如何使用 Python 2.7 创建一个将文件夹中的最新文件复制到另一个文件夹的函数?
- python - 导出如何在 plotly DataTable 中工作?
- php - 如何从 laravel excel maatwebsite 的子表中调用单元格值?
- google-cloud-platform - 通过 mosquitto 代理发布到谷歌云中的不同 pubsub 主题?
- storage - 查找对 Azure 存储表的删除实体调用
- html - 超链接在移动响应式 CSS 中不起作用
- react-native - React Native:更新由管理的视图的属性“转换”时出错:Android中的RCTView
- javascript - Javascript 函数不适用于 Internet Explorer
- unix - 您可以将 mut i8 转换为 i32 吗?