2

に描画しようとして行き詰まりましたJPanel。を作成しJFrameJPanelイベント ハンドラを追加し、アプレットで同じことを行い、その他の基本的な GUI 開発を行う方法を学びました。しかし、またはメソッドJPanelを使用して描画しようとするたびに、何も表示されません。ボタンやその他のボタンは問題なく表示されます。しかし、、などは空白のウィンドウになります。paintComponent(Graphics g)paint(Graphics g)JComponentsg.drawStringg.drawRectJFrame

これが私のコードです:

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プレーンなバニラです。その1行を次のように変更する必要がありますJPanelGamepaintComponent()

JPanel panel = new Game();

すぐに違いがわかるはずです。

Gameで作成したインスタンスはmain()、メソッドの呼び出し以外には使用されていませんgame()。必要に応じて、代わりに次のようにして使用できます。

JPanel panel = this;

その後は以前と同じように進みます。

于 2013-07-09T22:30:56.907 に答える