Ahm*_*fik 2 java swing jpanel jframe paintcomponent
我已经卡住试图画上一个JPanel.我已经学会了如何创建a JFrame,a 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)
}
}
Run Code Online (Sandbox Code Playgroud)
在JPanel您要添加到您的JFrame是一个普通的JPanel,而不是一个实例Game包含,自定义类paintComponent()方法.你需要改变那一行
JPanel panel = new Game();
Run Code Online (Sandbox Code Playgroud)
你应该马上看到差异!
除了调用方法之外,Game您创建的实例main()不会用于任何内容game().你可以使用它,如果你愿意,可以这样做:
JPanel panel = this;
Run Code Online (Sandbox Code Playgroud)
然后像以前一样继续
| 归档时间: |
|
| 查看次数: |
1585 次 |
| 最近记录: |