2013-05-02 2 views
-1

Я пытаюсь добавить ActionListener в JMenuItem в меню java.Как добавить ActionListener в JMenuItem?

Вот скриншот из меню:

enter image description here

Я хочу добавить ActionListener на «Прямоугольник» JMenuItem для того, чтобы показать вверх форму прямоугольника при нажатии на пункт меню «Прямоугольник». Я много раз пытался добавить ActionListener, но я терпеть неудачу каждый раз.

Вот мой код:

Класс "menubar.java":

import javax.swing.*; 

public class menubar extends JFrame{ 

public menubar(){ 
    JMenuBar menubar = new JMenuBar(); 
    setJMenuBar(menubar); 

    JMenu shape = new JMenu("Shape"); 
    menubar.add(shape); 

    JMenuItem rect = new JMenuItem("Rectangle"); 
    shape.add(rect); 

    JMenuItem star = new JMenuItem("Star"); 
    shape.add(star); 

    JMenu color = new JMenu("Color"); 
    menubar.add(color); 

    JMenuItem black = new JMenuItem("Black"); 
    color.add(black); 

    JMenuItem orange = new JMenuItem("Orange"); 
    color.add(orange); 
} 

public static void main(String[] args) { 
    menubar gui = new menubar(); 
    gui.setTitle("Menu Bar"); 
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    shapes SPS = new shapes(); 
    gui.add(SPS); 
    gui.setSize(500,300); 
    gui.setVisible(true); 
    gui.setLocationRelativeTo(null); 
} 
} 

Класс "shapes.java":

import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 

public class shapes extends JPanel{ 
int midX = 220; 
int midY = 90; 
int radius[] = {60,20,50,20}; 
int nPoints = 16; 
int[] X = new int[nPoints]; 
int[] Y = new int[nPoints]; 

public void paintComponent(Graphics gphcs){ 
super.paintComponent(gphcs); 
this.setBackground(Color.WHITE); 

gphcs.setColor(Color.BLUE); 
gphcs.fillRect(20,35,100,30); 

gphcs.setColor(Color.RED); 
gphcs.drawString("Welcome to Java", 20, 20); 

for (int i=0; i < nPoints; i++) { 
     double x = Math.cos(i * ((2 * Math.PI)/nPoints)) * radius[i % 4]; 
     double y = Math.sin(i * ((2 * Math.PI)/nPoints)) * radius[i % 4]; 

     X[i] = (int) x + midX; 
     Y[i] = (int) y + midY; 
} 
gphcs.setColor(Color.GREEN); 
gphcs.fillPolygon(X, Y, nPoints); 
} 
} 

Я был бы очень благодарен, если бы кто-нибудь помог мне с этим вопросом.

Спасибо за ваше время ..

+1

Я не вижу, где вы пытались вызвать 'addActionListener (...)' к чему-либо. Вы посмотрели учебник меню Swing? Здесь все сказано для вас, и поэтому нам действительно не нужно срывать информацию здесь, так как она там для запроса. Google поможет вам найти его - или я также могу: [Как использовать меню] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html) –

+2

Серьезно? Вы посмотрели [Как пользоваться меню] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html), который был связан в вашем предыдущем вопросе? Голосовать за закрытие – MadProgrammer

+1

@MadProgrammer: Я знаю, это меня тоже удивило, и я не знал, что ему уже дали ссылку! К оригинальному плакату, если вы уже просмотрели учебник раньше, и это вас смутило, а затем сообщите нам, что именно вас смущает в вашем вопросе, но, пожалуйста, покажите нам, что вы, по крайней мере, попытаетесь решить его сначала, прежде чем сбросить свою проблему здесь, не показывая доказательство усилий. Пожалуйста, покажите нам, что вы не пытаетесь лениться об этом, а другие решают ваши проблемы для вас. –

ответ

-1

Один из способов, которые вы можете добавить ActionListener в контейнере находится:

общественный класс JMenuClass расширяет JFrame реализует ActionListener

Затем для каждого JMenuItem вам нужен слушатель, вы бы сделали

item.addActionListener (это)

В нижней части вашего класса, вам нужно будет добавить ваши actionPerformed методы, или же вы хотите осуществить это.

Приветствия

+5

-1, не очень хороший подход. Прежде всего, нет оснований продлевать JFrame, так как вы не добавляете новую фукнментальность в фрейм. Кроме того, каждый элемент меню должен иметь свой собственный ActionListener. – camickr

+0

Да, я использовал приведенный выше код и предложил метод, который пошел с их кодом; и не сказал ли я, что каждый JMenuItem нуждается в собственном слушателе? – sparkyShorts

+0

Как каждый JMenuItem получает уникальный слушатель, если вы переходите в 'this'? как ActionListener? –

Смежные вопросы