我目前工作的一個小遊戲,但我只是遇到了一個問題:繪製矩形上按下一個JButton
我有三類,第一種是JFrame中:
public class Game
{
public static void main(String[] args)
{
new Game().gui();
}
public void gui()
{
DrawPanel panel = new DrawPanel();
JFrame frame = new JFrame("Test");
//frame.add(panel);
frame.add(new MainMenu());
frame.setSize(800, 700);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
}
}
現在我有兩個其他類,其中一個是MainMenu,目前由一個JButton組成。 我決定讓菜單屬於自己的類,因爲後來我想通過按下escape來調用菜單,但問題是(出於測試的原因)我想在按下「start」時繪製一個矩形。我嘗試了不同的方法但沒有任何反應
public class MainMenu extends JPanel implements ActionListener
{
GamePanel panel = new GamePanel();
public MainMenu()
{
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JButton b1 = new JButton("Start");
c.fill = GridBagConstraints.HORIZONTAL;
c.ipadx = 200;
b1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e) {
setVisible(false);
}
});
add(b1, c);
}
}
public class DrawPanel extends JPanel
{
public void paint(Graphics g)
{
g.drawRect (10, 10, 200, 200);
}
}
你有'//frame.add(面板);',所以沒有任何繪製... –
我知道。但它不管用。 – JonDoeMaths
我認爲你應該'@覆蓋''paintComponent'方法。你可以看到[Swing中的自定義繪畫](https://docs.oracle.com/javase/tutorial/uiswing/painting/)。你的按鈕監聽器是一個單獨的問題,而不是現在繪製任何東西 –