2

我在尝试绘制JPanel. 我已经学会了如何创建 a JFrame、 a JPanel、添加事件处理程序、在 applet 中做同样的事情,以及其他一些基本的 GUI 开发。但是每次我尝试JPanel使用paintComponent(Graphics g)orpaint(Graphics g)方法绘制 a 时,什么都没有出现。按钮,以及其他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)
    }
}
4

1 回答 1

7

JPanel您添加到您的是JFrame一个普通的 vanilla ,而不是包含该方法的自定义类JPanel的实例。您需要将那一行更改为GamepaintComponent()

JPanel panel = new Game();

您应该立即看到不同之处!

除了调用方法之外,Game您创建的实例main()没有用于任何用途。game()如果你愿意,你可以通过这样做来使用它:

JPanel panel = this;

然后像以前一样进行。

于 2013-07-09T22:30:56.907 回答