В настоящее время я работаю над маленькой игрой, но я только столкнулся с проблемой:Draw прямоугольника при нажатии 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/). Ваш прослушиватель кнопок является отдельным вопросом, чем в настоящее время рисует что-либо. –