Тема: Реалізація меню в Java
У моїй програмі створюється меню, а в ньому підменю. В підменю я створюю три елементи: "малювати квадрат", "малювати коло", та "малювати багатокутник". Але чомусь при виборі якогось із пунктів мені нічого не малює. Допоможіть будь-ласка вирішити дану проблему.
package project;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.AbstractAction;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class Main
{
public static void main(String[] args)
{
FormFrame frame1 = new FormFrame();
frame1.setSize(900, 600);
frame1.setTitle("Laba8");
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setVisible(true);
}
static class FormFrame extends JFrame
{
static class Figura extends JComponent
{
int index;
int[] x = {250, 337, 337, 250, 163, 163};
int[] y = {350, 300, 200, 150, 200, 300};
int[] xx = {100, 300, 100, 300};
int[] yy = {100, 100, 300, 300};
public Figura(int index)
{
this.index = index;
}
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
if(index == 1)
{
g.fillOval(150,150,100,100);
}
else if(index == 2)
{
g.fillPolygon(x, y, 6);
}
else if(index == 3)
{
g.fillPolygon(xx, yy, 4);
}
}
}
FormFrame()
{
setLayout(null);
JMenuBar menuBar = new JMenuBar(); // створюємо панель-меню
setJMenuBar(menuBar);
JMenu menu = new JMenu("Меню"); // створюємо меню
menuBar.add(menu);
JMenu drawMenu = new JMenu("Малювати"); // підменю для малювання
menu.add(drawMenu);
Action drawCircle = new AbstractAction("Коло")
{
@Override
public void actionPerformed(ActionEvent e)
{
Figura circle = new Figura(1);
circle.repaint();
}
};
Action drawHex = new AbstractAction("Багатокутник")
{
@Override
public void actionPerformed(ActionEvent e)
{
Figura hex = new Figura(2);
hex.repaint();
}
};
Action drawSquare = new AbstractAction("Квадрат")
{
@Override
public void actionPerformed(ActionEvent e)
{
Figura Square = new Figura(3);
Square.repaint();
}
};
JMenuItem item1 = new JMenuItem(drawCircle);
drawMenu.add(item1);
item1.setAccelerator(KeyStroke.getKeyStroke('C', KeyEvent.CTRL_MASK));
JMenuItem item2 = new JMenuItem(drawHex);
drawMenu.add(item2);
item2.setAccelerator(KeyStroke.getKeyStroke('B', KeyEvent.CTRL_MASK));
JMenuItem item3 = new JMenuItem(drawSquare);
drawMenu.add(item3);
item3.setAccelerator(KeyStroke.getKeyStroke('K', KeyEvent.CTRL_MASK));
drawMenu.addSeparator();
Action exitAction = new AbstractAction("Вийти")
{
@Override
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
};
JMenuItem item4 = new JMenuItem(exitAction); // пункт меню для виходу з програми
menu.add(item4);
}
}
}