小弟是JAVA初学者,按着教科书上的例子写了个记事本程序(书上的原文例子),可是运行后功实现不了,那位大侠帮忙改进下,不盛感激。
我的程序是用的监听类分开监听模式。
MouseHandler.javaimport java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;class MouseHandler extends MouseAdapter{
public void mouseReleased(MouseEvent e){
if (e.getButton()==MouseEvent.BUTTON3&&e.getSource()==txtContent){
popupMenu.show(txtContent,e.getX(),e.getY());
}
super.mouseReleased(e);
}
}keyHandler.java
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;class keyHandler extends KeyAdapter{
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}ConfirmHandler.java import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;import javax.swing.JFileChooser;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;class ConfirmHandler implements ActionListener{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(!(e.getSource() instanceof JMenuItem))
return;
JMenuItem i = (JMenuItem)e.getSource();
if(i==newItem)
iNew();
else if (i==openItem)
iOpen();
else if (i==saveAsItem)
iSave();
else if (i==cutItem||i==cutPitem)
iCut();
else if (i==copyItem||i==copyPitem)
iCopy();
else if(i==pasteItem||i==pastePitem)
iPaste();
else if (i==aboutItem)
iAbout();
} private void iAbout() {
// TODO Auto-generated method stub
String mes="";
JOptionPane.showMessageDialog(null, mes);
} private void iPaste() {
// TODO Auto-generated method stub
txtContent.paste();
lblStatus.setText("已修改");
} private void iCopy() {
// TODO Auto-generated method stub
txtContent.copy();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
} private void iCut() {
// TODO Auto-generated method stub
txtContent.cut();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
lblStatus.setText("已修改");
} private void iSave() {
// TODO Auto-generated method stub
JFileChooser chooser = new JFileChooser();
PrintWriter w = null;
File file = null;
if(lblStatus.getText().equals("已修改")){
int s =chooser.showSaveDialog(null);
if(s==JFileChooser.CANCEL_OPTION)
return;
file = chooser.getSelectedFile();
try{
w = new PrintWriter(new BufferedWriter(new FileWriter(file)));
String ss[]=txtContent.getText().split("\n");
for(String st:ss)
w.println(st);
}catch (FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
w.close();
}
}
lblStatus.setText("未修改");
} private void iOpen() {
// TODO Auto-generated method stub
iNew();
JFileChooser chooser = new JFileChooser();
int s = chooser.showOpenDialog(null);
String str = "";
if(s==JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile();
BufferedReader r= null;
try{
r = new BufferedReader(new FileReader(file));
while(true){
str = r.readLine();
if(str==null)
break;
txtContent.append(str+"\n");
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{r.close();}
catch(IOException e){e.printStackTrace();}
}
Notepad.this.setTitle(file.getName());
}
} private void iNew() {
// TODO Auto-generated method stub
if (lblStatus.getText().equals("已修改")){
int confirm = JOptionPane.showConfirmDialog(null, "文件已修改,要另存修改码?");
if (confirm==JOptionPane.OK_OPTION)
iSave();
else if(confirm==JOptionPane.CANCEL_OPTION)
return;
}
txtContent.setText("");
pasteItem.setEnabled(false);
pastePitem.setEnabled(false);
Notepad.this.setTitle("记事本");
lblStatus.setText("未修改");
}
}Notepad.java import java.awt.BorderLayout;
import java.awt.Container;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;class Notepad extends JFrame{
private JMenuBar mainBar;
private JPopupMenu popupMenu;
private JMenu file,edit,help;
private JMenuItem newItem,openItem,saveAsItem;
private JMenuItem cutItem,copyItem,pasteItem,cutPitem,copyPitem,pastePitem;
private JMenuItem aboutItem;
private JTextArea txtContent;
private JLabel lblStatus;
private ConfirmHandler cHandler = new ConfirmHandler();
private keyHandler kHandler=new keyHandler();
private MouseHandler Mhandler = new MouseHandler();
public Notepad(){
this("记事本");
}
public Notepad(String title){
super(title);
intMenu();
intGUI();
setSize(600,500);
setVisible(true);
setLocation(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private void intGUI() {
// TODO Auto-generated method stub
Container c = getContentPane();
txtContent = new JTextArea();
txtContent.setLineWrap(true);
txtContent.setWrapStyleWord(true);
txtContent.addKeyListener(kHandler);
txtContent.addMouseListener(Mhandler);
JScrollPane s= new JScrollPane(txtContent);
c.add(s,BorderLayout.CENTER);
lblStatus=new JLabel("未修改");
c.add(lblStatus,BorderLayout.SOUTH);
} private void intMenu() {
// TODO Auto-generated method stub
mainBar = new JMenuBar();
setJMenuBar(mainBar);
file = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(cHandler);
openItem = new JMenuItem("打开");
openItem.addActionListener(cHandler);
saveAsItem = new JMenuItem("另存为");
saveAsItem.addActionListener(cHandler);
file.add(newItem);
file.add(openItem);
file.add(saveAsItem);
edit=new JMenu("编辑");
cutItem=new JMenuItem("剪切");
cutItem.addActionListener(cHandler);
copyItem = new JMenuItem("复制");
copyItem.addActionListener(cHandler);
pasteItem = new JMenuItem("粘帖");
pasteItem.addActionListener(cHandler);
edit.add(cutItem);
edit.add(copyItem);
edit.add(pasteItem);
popupMenu = new JPopupMenu();
cutPitem = new JMenuItem("剪切");
cutPitem.addActionListener(cHandler);
copyPitem = new JMenuItem("复制");
copyPitem.addActionListener(cHandler);
pastePitem = new JMenuItem("粘帖");
pastePitem.addActionListener(cHandler);
pastePitem.setEnabled(false);
pastePitem.addActionListener(cHandler);
popupMenu.add(cutPitem);
popupMenu.add(copyPitem);
popupMenu.add(pastePitem);
help = new JMenu("帮助");
aboutItem = new JMenuItem("关于 记事本");
aboutItem.addActionListener(cHandler);
help.add(aboutItem);
mainBar.add(file);
mainBar.add(edit);
mainBar.add(help);
}
}MyNotepad.java
public class MyNotepad { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Notepad();
}}
我的程序是用的监听类分开监听模式。
MouseHandler.javaimport java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;class MouseHandler extends MouseAdapter{
public void mouseReleased(MouseEvent e){
if (e.getButton()==MouseEvent.BUTTON3&&e.getSource()==txtContent){
popupMenu.show(txtContent,e.getX(),e.getY());
}
super.mouseReleased(e);
}
}keyHandler.java
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;class keyHandler extends KeyAdapter{
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}ConfirmHandler.java import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;import javax.swing.JFileChooser;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;class ConfirmHandler implements ActionListener{ @Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(!(e.getSource() instanceof JMenuItem))
return;
JMenuItem i = (JMenuItem)e.getSource();
if(i==newItem)
iNew();
else if (i==openItem)
iOpen();
else if (i==saveAsItem)
iSave();
else if (i==cutItem||i==cutPitem)
iCut();
else if (i==copyItem||i==copyPitem)
iCopy();
else if(i==pasteItem||i==pastePitem)
iPaste();
else if (i==aboutItem)
iAbout();
} private void iAbout() {
// TODO Auto-generated method stub
String mes="";
JOptionPane.showMessageDialog(null, mes);
} private void iPaste() {
// TODO Auto-generated method stub
txtContent.paste();
lblStatus.setText("已修改");
} private void iCopy() {
// TODO Auto-generated method stub
txtContent.copy();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
} private void iCut() {
// TODO Auto-generated method stub
txtContent.cut();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
lblStatus.setText("已修改");
} private void iSave() {
// TODO Auto-generated method stub
JFileChooser chooser = new JFileChooser();
PrintWriter w = null;
File file = null;
if(lblStatus.getText().equals("已修改")){
int s =chooser.showSaveDialog(null);
if(s==JFileChooser.CANCEL_OPTION)
return;
file = chooser.getSelectedFile();
try{
w = new PrintWriter(new BufferedWriter(new FileWriter(file)));
String ss[]=txtContent.getText().split("\n");
for(String st:ss)
w.println(st);
}catch (FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
w.close();
}
}
lblStatus.setText("未修改");
} private void iOpen() {
// TODO Auto-generated method stub
iNew();
JFileChooser chooser = new JFileChooser();
int s = chooser.showOpenDialog(null);
String str = "";
if(s==JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile();
BufferedReader r= null;
try{
r = new BufferedReader(new FileReader(file));
while(true){
str = r.readLine();
if(str==null)
break;
txtContent.append(str+"\n");
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{r.close();}
catch(IOException e){e.printStackTrace();}
}
Notepad.this.setTitle(file.getName());
}
} private void iNew() {
// TODO Auto-generated method stub
if (lblStatus.getText().equals("已修改")){
int confirm = JOptionPane.showConfirmDialog(null, "文件已修改,要另存修改码?");
if (confirm==JOptionPane.OK_OPTION)
iSave();
else if(confirm==JOptionPane.CANCEL_OPTION)
return;
}
txtContent.setText("");
pasteItem.setEnabled(false);
pastePitem.setEnabled(false);
Notepad.this.setTitle("记事本");
lblStatus.setText("未修改");
}
}Notepad.java import java.awt.BorderLayout;
import java.awt.Container;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;class Notepad extends JFrame{
private JMenuBar mainBar;
private JPopupMenu popupMenu;
private JMenu file,edit,help;
private JMenuItem newItem,openItem,saveAsItem;
private JMenuItem cutItem,copyItem,pasteItem,cutPitem,copyPitem,pastePitem;
private JMenuItem aboutItem;
private JTextArea txtContent;
private JLabel lblStatus;
private ConfirmHandler cHandler = new ConfirmHandler();
private keyHandler kHandler=new keyHandler();
private MouseHandler Mhandler = new MouseHandler();
public Notepad(){
this("记事本");
}
public Notepad(String title){
super(title);
intMenu();
intGUI();
setSize(600,500);
setVisible(true);
setLocation(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private void intGUI() {
// TODO Auto-generated method stub
Container c = getContentPane();
txtContent = new JTextArea();
txtContent.setLineWrap(true);
txtContent.setWrapStyleWord(true);
txtContent.addKeyListener(kHandler);
txtContent.addMouseListener(Mhandler);
JScrollPane s= new JScrollPane(txtContent);
c.add(s,BorderLayout.CENTER);
lblStatus=new JLabel("未修改");
c.add(lblStatus,BorderLayout.SOUTH);
} private void intMenu() {
// TODO Auto-generated method stub
mainBar = new JMenuBar();
setJMenuBar(mainBar);
file = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(cHandler);
openItem = new JMenuItem("打开");
openItem.addActionListener(cHandler);
saveAsItem = new JMenuItem("另存为");
saveAsItem.addActionListener(cHandler);
file.add(newItem);
file.add(openItem);
file.add(saveAsItem);
edit=new JMenu("编辑");
cutItem=new JMenuItem("剪切");
cutItem.addActionListener(cHandler);
copyItem = new JMenuItem("复制");
copyItem.addActionListener(cHandler);
pasteItem = new JMenuItem("粘帖");
pasteItem.addActionListener(cHandler);
edit.add(cutItem);
edit.add(copyItem);
edit.add(pasteItem);
popupMenu = new JPopupMenu();
cutPitem = new JMenuItem("剪切");
cutPitem.addActionListener(cHandler);
copyPitem = new JMenuItem("复制");
copyPitem.addActionListener(cHandler);
pastePitem = new JMenuItem("粘帖");
pastePitem.addActionListener(cHandler);
pastePitem.setEnabled(false);
pastePitem.addActionListener(cHandler);
popupMenu.add(cutPitem);
popupMenu.add(copyPitem);
popupMenu.add(pastePitem);
help = new JMenu("帮助");
aboutItem = new JMenuItem("关于 记事本");
aboutItem.addActionListener(cHandler);
help.add(aboutItem);
mainBar.add(file);
mainBar.add(edit);
mainBar.add(help);
}
}MyNotepad.java
public class MyNotepad { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Notepad();
}}
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;import javax.swing.JLabel;
import javax.swing.JTextArea;class keyHandler extends KeyAdapter{
protected JTextArea txtContent;
protected JLabel lblStatus;
public void settxtContent(JTextArea atxtContent){
txtContent =atxtContent;
}
public void setlblStatus(JLabel alblStatus){
lblStatus = alblStatus;
}
public void keyTyped(KeyEvent e){
if(e.getSource()==txtContent)
lblStatus.setText("已修改");
super.keyTyped(e);
}
}
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JPopupMenu;
import javax.swing.JTextArea;class MouseHandler extends MouseAdapter{
protected JTextArea txtContent;
protected JPopupMenu popupMenu;
public void settxtContent(JTextArea atxtContent){
txtContent =atxtContent;
}
public void setpopupMenu(JPopupMenu apopupMenu){
popupMenu =apopupMenu;
}
public void mouseReleased(MouseEvent e){
if (e.getButton()==MouseEvent.BUTTON3&&e.getSource()==txtContent){
popupMenu.show(txtContent,e.getX(),e.getY());
}
super.mouseReleased(e);
}
}import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;class ConfirmHandler implements ActionListener{
JFrame obj;
protected JMenuItem pasteItem,pastePitem;
protected JTextArea txtContent;
protected JLabel lblStatus;
public ConfirmHandler(Object source)
{
obj =(JFrame) source;
}
public void settxtContent(JTextArea atxtContent){
//JOptionPane.showMessageDialog(null,txtContent.hashCode());
txtContent =atxtContent;
}
public void setlblStatus(JLabel alblStatus){
lblStatus = alblStatus;
}
public void setpasteItem(JMenuItem apasteItem){
pasteItem = apasteItem;
}
public void setpastePitem(JMenuItem apastePitem){
pastePitem = apastePitem;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(!(e.getSource() instanceof JMenuItem))
return;
JMenuItem i = (JMenuItem)e.getSource();
switch (i.getLabel()) {
case "新建":
iNew();
break;
case "打开":
iOpen();
break;
case "另存为":
iSave();
break;
case "剪切":
iCut();
break;
case "复制":
iCopy();
break;
case "粘帖":
iPaste();
break;
case "关于 记事本":
iAbout();
break;
}
} private void iAbout() {
// TODO Auto-generated method stub
String mes="bad";
JOptionPane.showMessageDialog(null, mes);
} private void iPaste() {
// TODO Auto-generated method stub
txtContent.paste();
lblStatus.setText("已修改");
} private void iCopy() {
// TODO Auto-generated method stub
txtContent.copy();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
} private void iCut() {
// TODO Auto-generated method stube
txtContent.cut();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
lblStatus.setText("已修改");
} private void iSave() {
// TODO Auto-generated method stub
JFileChooser chooser = new JFileChooser();
PrintWriter w = null;
File file = null;
if(lblStatus.getText().equals("已修改")){
int s =chooser.showSaveDialog(null);
if(s==JFileChooser.CANCEL_OPTION)
return;
file = chooser.getSelectedFile();
try{
w = new PrintWriter(new BufferedWriter(new FileWriter(file)));
String ss[]=txtContent.getText().split("\n");
for(String st:ss)
w.println(st);
}catch (FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
w.close();
}
}
lblStatus.setText("未修改");
} private void iOpen() {
// TODO Auto-generated method stub
iNew();
JFileChooser chooser = new JFileChooser();
int s = chooser.showOpenDialog(null);
String str = "";
if(s==JFileChooser.APPROVE_OPTION)
{
File file = chooser.getSelectedFile();
BufferedReader r= null;
try{
r = new BufferedReader(new FileReader(file));
while(true){
str = r.readLine();
if(str==null)
break;
txtContent.append(str+"\n");
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
try{r.close();}
catch(IOException e){e.printStackTrace();}
}
obj.setTitle(file.getName());
}
} private void iNew() {
// TODO Auto-generated method stub
if (lblStatus.getText().equals("已修改")){
int confirm = JOptionPane.showConfirmDialog(null, "文件已修改,要另存修改码?");
if (confirm==JOptionPane.OK_OPTION)
iSave();
else if(confirm==JOptionPane.CANCEL_OPTION)
return;
}
txtContent.setText("");
pasteItem.setEnabled(false);
pastePitem.setEnabled(false);
obj.setTitle("新记事本");
lblStatus.setText("未修改");
}
}import java.awt.BorderLayout;
import java.awt.Container;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;class Notepad extends JFrame{
private JMenuBar mainBar;
private JPopupMenu popupMenu;
private JMenu file,edit,help;
private JMenuItem newItem,openItem,saveAsItem;
private JMenuItem cutItem,copyItem,pasteItem,cutPitem,copyPitem,pastePitem;
private JMenuItem aboutItem;
private JTextArea txtContent;
private JLabel lblStatus;
private ConfirmHandler cHandler = new ConfirmHandler(this);
private keyHandler kHandler=new keyHandler();
private MouseHandler Mhandler = new MouseHandler();
public Notepad(){
this("记事本");
}
public Notepad(String title){
super(title);
intMenu();
intGUI();
setSize(600,500);
setVisible(true);
setLocation(300,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private void intGUI() {
// TODO Auto-generated method stub
Container c = getContentPane();
txtContent = new JTextArea();
//JOptionPane.showMessageDialog(null,txtContent.hashCode())
cHandler.settxtContent(txtContent);
kHandler.settxtContent(txtContent);
Mhandler.settxtContent(txtContent);
txtContent.setLineWrap(true);
txtContent.setWrapStyleWord(true);
txtContent.addKeyListener(kHandler);
txtContent.addMouseListener(Mhandler);
JScrollPane s= new JScrollPane(txtContent);
c.add(s,BorderLayout.CENTER);
lblStatus=new JLabel("未修改");
cHandler.setlblStatus(lblStatus);
kHandler.setlblStatus(lblStatus);
c.add(lblStatus,BorderLayout.SOUTH);
} private void intMenu() {
// TODO Auto-generated method stub
mainBar = new JMenuBar();
setJMenuBar(mainBar);
file = new JMenu("文件");
newItem = new JMenuItem("新建");
newItem.addActionListener(cHandler);
openItem = new JMenuItem("打开");
openItem.addActionListener(cHandler);
saveAsItem = new JMenuItem("另存为");
saveAsItem.addActionListener(cHandler);
file.add(newItem);
file.add(openItem);
file.add(saveAsItem);
edit=new JMenu("编辑");
cutItem=new JMenuItem("剪切");
cutItem.addActionListener(cHandler);
copyItem = new JMenuItem("复制");
copyItem.addActionListener(cHandler);
pasteItem = new JMenuItem("粘帖");
cHandler.setpasteItem(pasteItem);
pasteItem.addActionListener(cHandler);
edit.add(cutItem);
edit.add(copyItem);
edit.add(pasteItem);
popupMenu = new JPopupMenu();
Mhandler.setpopupMenu(popupMenu);
cutPitem = new JMenuItem("剪切");
cutPitem.addActionListener(cHandler);
copyPitem = new JMenuItem("复制");
copyPitem.addActionListener(cHandler);
pastePitem = new JMenuItem("粘帖");
cHandler.setpastePitem(pastePitem);
pastePitem.addActionListener(cHandler);
pastePitem.setEnabled(false);
pastePitem.addActionListener(cHandler);
popupMenu.add(cutPitem);
popupMenu.add(copyPitem);
popupMenu.add(pastePitem);
help = new JMenu("帮助");
aboutItem = new JMenuItem("关于 记事本");
aboutItem.addActionListener(cHandler);
help.add(aboutItem);
mainBar.add(file);
mainBar.add(edit);
mainBar.add(help);
}
}public class MyNotepad { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Notepad();
}}哎,要是JAVA也有类标号管理特性就好,即在NEW时就给新生成的对象分配一个同名的标签做标识ID,hashCode即不方便也解决不了问题,这样就可以做多语言动态菜单,
如:
1,不用那么多的传址函数
a,把所有的引用对象放到一个数据组中
public void setMenuListener(JMenuItem aMenuItem){
LisMenuItem[LisMenuItem.length +1] = aMenuItem;
}
b,根据标点取出各自的引用对象
public Object getMenuListener(String aID){
Object rtnMenuItem;
for(int i =0;i<LisMenuItem.length;i++)
{
if (LisMenuItem[i].ID = aID)
rtnMenuItem = LisMenuItem[i];
}
return rtnMenuItem
}2.实现功能接口可以更简化
如:
switch (i.getID()) {
case "newItem":
iNew();
break;
case "OpenItem":
iOpen();
break;
case "saveAsItem":
iSave();
break;
case "cutItem":
iCut();
break;
case "copyItem":
iCopy();
break;
case "pasteItem":
iPaste();
break;
case "aboutItem":
iAbout();
break;
}
}3,各自实现功能的函数则更简洁
如:
private void iCut() {
// TODO Auto-generated method stube
txtContent.cut();
pasteItem.setEnabled(true);
pastePitem.setEnabled(true);
lblStatus.setText("已修改");
}可变为:
private void iCut() {
// TODO Auto-generated method stube
getMenuListener("txtContent").cut();
getMenuListener("pasteItem").setEnabled(true);
getMenuListener("pasteItem").setEnabled(true);
getMenuListener("lblStatus").setText("已修改");
}哎,一个动态地址数组和每个对象一个标号管理,就可能解决大问题呀!(比如,程序可以更精简且可读性更强,而且可能很方便地实现多语言切换界面,而目前几乎没有几种语言能方便的实现这个功能(多语言界面其实更多的就是一个皮肤更改的问题,如JLabel,只需把Label值改了就行))