我试图在JPanel
上画画时遇到困难。我已经学会了如何创建JFrame
,JPanel
,添加事件处理程序,在applet中执行相同的操作以及其他一些基本的GUI开发。但每当我尝试使用JPanel
或paintComponent(Graphics g)
方法绘制paint(Graphics g)
时,都不会显示任何内容。按钮以及其他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)
}
}
答案 0 :(得分:6)
您添加到JPanel
的{{1}}是一个普通的JFrame
,而不是JPanel
的实例,您的自定义类包含Game
} 方法。你需要改变那一行
paintComponent()
你应该立即看到差异!
除了调用JPanel panel = new Game();
方法之外,您在Game
中创建的main()
实例并未用于任何内容。如果你愿意,可以使用它来代替:
game()
然后继续前进。