当前位置: 代码迷 >> J2SE >> 关于java中菜单事件的监听有关问题,求各位大神
  详细解决方案

关于java中菜单事件的监听有关问题,求各位大神

热度:148   发布时间:2016-04-23 20:16:21.0
关于java中菜单事件的监听问题,求各位大神!
我的目的是鼠标点击菜单中的不同等级,窗口中产生的按钮数不同,比如点击了初级,那生成的就是有10x10的按钮数的窗口,点击了中级,就生成有15x15按钮数的窗口,可我的程序好像不执行我设的事件监听,总是生成初始化时5x5的按钮数窗口,求大神们帮我改一下。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MenuEvent extends JFrame{
private JMenuBar aaa;
private JMenu bbb;
private JPanel panel;
private JButton buttons[][];
int a=5,b=5;
Container c = getContentPane();

public MenuEvent() {
aaa = new JMenuBar();
this.setJMenuBar(aaa);
bbb = new JMenu("选项");
aaa.add(bbb);
JMenuItem ccc = new JMenuItem("初级");
JMenuItem ddd = new JMenuItem("中级");
JMenuItem eee = new JMenuItem("高级");
ccc.addMouseListener(new MouseAdapter() {
public void mouseClicked(ActionEvent e) {
a=10;
b=10;
}
});
bbb.add(ccc);
bbb.addSeparator();
ddd.addMouseListener(new MouseAdapter() {
public void mouseClicked() {
a=15;
b=15;
}
});
bbb.add(ddd);
bbb.addSeparator();
eee.addMouseListener(new MouseAdapter() {
public void mouseClicked() {
a=20;
b=20;
}
});
bbb.add(eee);
buttons=new JButton[a][b];
panel=new JPanel();
panel.setLayout(new GridLayout(a,b,2,2));
for(int i=0;i<a;i++){
for(int j=0;j<b;j++){
buttons[i][j]=new JButton();
panel.add(buttons[i][j]);
}
}
c.add(panel,BorderLayout.CENTER);
setSize(500,500);
setVisible(true);
}
public static void main(String[] args) {
MenuEvent m = new MenuEvent();
}
}
------解决思路----------------------
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class MenuEvent extends JFrame {
private JMenuBar aaa;
private JMenu bbb;
private JPanel panel;
private JButton buttons[][];
int a = 5, b = 5;
Container c = getContentPane();

public MenuEvent() {
aaa = new JMenuBar();
this.setJMenuBar(aaa);
bbb = new JMenu("选项");
aaa.add(bbb);
JMenuItem ccc = new JMenuItem("初级");
JMenuItem ddd = new JMenuItem("中级");
JMenuItem eee = new JMenuItem("高级");
ccc.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
a = 10;
b = 10;
refreshUI();
}
});
bbb.add(ccc);
bbb.addSeparator();
ddd.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
a = 15;
b = 15;
refreshUI();
}
});
bbb.add(ddd);
bbb.addSeparator();
eee.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
a = 20;
b = 20;
refreshUI();
}
});
bbb.add(eee);

refreshUI();
setSize(500, 500);
setVisible(true);
}

private void refreshUI() {
buttons = new JButton[a][b];
panel = new JPanel();
panel.setLayout(new GridLayout(a, b, 2, 2));
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
buttons[i][j] = new JButton();
panel.add(buttons[i][j]);
}
}
c.removeAll();
c.add(panel, BorderLayout.CENTER);
this.validate();
}

public static void main(String[] args) {
MenuEvent m = new MenuEvent();
}
}

------解决思路----------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class MenuEvent extends JFrame {
    private JPanel panel;
    public MenuEvent() {
        JMenuBar jMenuBar = new JMenuBar();
        JMenu jMenu = new JMenu("选项");
        JMenuItem item1 = new JMenuItem("初级");
        JMenuItem item2 = new JMenuItem("中级");
        JMenuItem item3 = new JMenuItem("高级");
        jMenu.add(item1);
        jMenu.addSeparator();
        jMenu.add(item2);
        jMenu.addSeparator();
        jMenu.add(item3);
  相关解决方案