我目前工作的一个小游戏,但我只是遇到了一个问题:绘制矩形上按下一个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/)。你的按钮监听器是一个单独的问题,而不是现在绘制任何东西 –