[英]Java - paintComponent won't show drawings on JPanel
我被困在尝试绘制JPanel
。 我已经学习了如何创建JFrame
, JPanel
,添加事件处理程序,在applet中进行相同的操作以及其他一些基本的GUI开发。 但是每次我尝试使用paintComponent(Graphics g)
或paint(Graphics g)
方法在JPanel
上绘制时,都不会显示任何内容。 按钮以及其他JComponents
都可以正常显示。 但是g.drawString
, g.drawRect
等导致空白的JFrame
窗口。
这是我的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class Game extends JPanel {
public static void main(String[] args) {
new Game().game();
}
JPanel panel;
JButton button2;
JButton button;
public void game() {
panel = new JPanel();
button = new JButton("Ok");
panel.setLayout(new FlowLayout());
panel.add(button);
button2 = new JButton("Cancel");
JFrame frame = new JFrame("Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
frame.setResizable(false);
frame.add(panel);
frame.setVisible(true);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("hi",100,100);
g.fillRect(100,50,200,300)
}
}
在JPanel
您要添加到您JFrame
是一个普通JPanel
,而不是一个实例Game
,自定义类包含paintComponent()
方法。 您需要将该行更改为
JPanel panel = new Game();
并且您应该立即看到差异!
您在main()
创建的Game
实例除了调用game()
方法外,没有任何其他用途。 如果需要,您可以通过执行以下操作来使用它:
JPanel panel = this;
然后像以前一样进行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.