Cześć, mam problem z JPopupMenu jak i ze zwykłym JMenu, rysuję sobie figury na JPanelu i po wciśnięciu prawego klawisza myszy wybieram sobie kolor z JPopup'a, on znika, a wraz z nim to co było pod nim, to samo z rozwijanym głównym menu, kasuje wszystko pod sobą, nie moge znaleźć żadnego sensownego rozwiązania a jestem zupełnie początkujący, jest jakaś metoda oddzielająca menu z panelem? :)
JPopupMenu mypopupmenu;
JMenuItem edit, black, red, green, blue, yellow, orange, random;
JMenu chooseColor;
MyPopupMenu() {
mypopupmenu = new JPopupMenu();
edit = new JMenuItem("Edytuj");
chooseColor = new JMenu("Wybierz kolor");
black = new JMenuItem("Czarny");
red = new JMenuItem("Czerwony");
green = new JMenuItem("Zielony");
blue = new JMenuItem("Niebieski");
yellow = new JMenuItem("Żółty");
orange = new JMenuItem("Pomarańczowy");
random = new JMenuItem("Losowy");
chooseColor.add(black);
chooseColor.add(red);
chooseColor.add(green);
chooseColor.add(blue);
chooseColor.add(yellow);
chooseColor.add(orange);
chooseColor.add(random);
mypopupmenu.add(edit);
mypopupmenu.add(chooseColor);
edit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// setEditable(true);
}
});
black.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawingField.setCurrentColor(Color.BLACK);
}
});
red.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawingField.setCurrentColor(Color.RED);
}
});
green.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawingField.setCurrentColor(Color.GREEN);
}
});
blue.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawingField.setCurrentColor(Color.BLUE);
}
});
yellow.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawingField.setCurrentColor(Color.YELLOW);
}
});
orange.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
drawingField.setCurrentColor(Color.ORANGE);
}
});
random.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Random r = new Random();
Color randomColor = new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256));
drawingField.setCurrentColor(randomColor);
}
});
// obsługa pojawienia się PopupMenu
drawingField.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
mypopupmenu.show(frame, e.getX(), e.getY());
}
}
});
}