JAVA菜单事件………………

09-12-07 Fkron
代码如下:(帮帮忙看下,怎么不能运行,事件不行):
import javax.swing.*;
import java.awt.event.*;
import java.awt.datatransfer.Clipboard ;
import java.awt.*;
import java.awt.datatransfer.*;

public class MenuDemo extends JFrame implements ActionListener {
//File Menu
JMenuBar jmb=new JMenuBar();
JMenu File=new JMenu("File");
JMenuItem newfile=new JMenuItem("New");
JMenuItem open=new JMenuItem("Open");
JMenuItem close=new JMenuItem("Close");
//Edit Menu
JMenu Edit=new JMenu("Edit");
JMenuItem copy=new JMenuItem("Copy");
JMenuItem cut=new JMenuItem("Cut");
JMenuItem paste=new JMenuItem("Paste");
//Style Menu
JMenu Style=new JMenu("Style");
JMenu Font=new JMenu("Font");
JMenuItem Bold=new JMenuItem("Bold");
JMenuItem Italic=new JMenuItem("Italic");
//Style Menu in Style,,all kinds of color
JMenu Color=new JMenu("Color");
JMenuItem RedItem=new JMenuItem("Red");
JMenuItem BlueItem=new JMenuItem("Blue");
JMenuItem GreenItem=new JMenuItem("Green");
//BackColor
JMenu Bgcolor=new JMenu("BackDrop");
JMenuItem Red=new JMenuItem("Red");
JMenuItem Blue=new JMenuItem("Blue");
JMenuItem Green=new JMenuItem("Green");

JMenu Help=new JMenu("Help");
JTextArea display=new JTextArea();
Clipboard clipboard=null;
JFileChooser fc;
public MenuDemo() {
super("文件管理");
setSize(300,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add("South",display);
this.getContentPane().add(new JScrollPane(display));
this.setJMenuBar(jmb);
initFileMenu();
initEditMenu();
initStyleMenu();
initHelpMenu();
}
public void initFileMenu(){
jmb.add(File);
File.add(newfile);
newfile.addActionListener(this);
newfile.setEnabled(false);
File.add(open);
open.addActionListener(this);
newfile.setEnabled(false);
File.addSeparator();
File.add(close);
close.addActionListener(this);

}
public void initEditMenu(){
jmb.add(Edit);
Edit.add(copy);
copy.addActionListener(this);
Edit.add(cut);
cut.addActionListener(this);
Edit.add(paste);
paste.addActionListener(this);
}
public void initStyleMenu(){
jmb.add(Style);
Style.add(Font);
Font.add(Bold);
Bold.addActionListener(this);
Font.add(Italic);
Italic.addActionListener(this);
Style.add(Bgcolor);
Bgcolor.add(Red);
Red.addActionListener(this);
Bgcolor.add(Blue);
Blue.addActionListener(this);
Bgcolor.add(Green);
Green.addActionListener(this);
Style.add(Color);
Color.add(RedItem);
RedItem.addActionListener(this);
Color.add(BlueItem);
BlueItem.addActionListener(this);
Color.add(GreenItem);
GreenItem.addActionListener(this);
}
public void initHelpMenu(){
jmb.add(Help);
}

public static void main(String[] args) {
MenuDemo m=new MenuDemo();
m.setVisible(true);
}

public void actionPerformed(ActionEvent e){
JMenuItem m=(JMenuItem)e.getSource();
if(m==close){
dispose();
System.exit(0);
}
else if(m==newfile){
display.setText("");

}
else if(m==open){
int returnVal = fc.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
fc.getSelectedFile().getName());


}
}
else if(m==RedItem){
display.setForeground(Color.red);
}
else if(m==BlueItem){
display.setForeground(Color.blue);
}
else if(m==GreenItem){
display.setForeground(Color.green);
}
else if(m==Red){
display.setBackground(Color.red);
}
else if(m==Blue){
display.setBackground(Color.blue);
}
else if(m==Green){
display.setBackground(Color.green);
}
else if(m==Bold){
display.setFont(new Font("SansSerif",Font.BOLD,12));
}
else if(m==Italic){
display.setFont(new Font("SansSerif",Font.ITALIC,12));
}
else if(m==copy){ //放到clipboard
clipboard=getToolkit().getSystemClipboard();//获取系统剪贴板。
String temp=display.getSelectedText(); //拖动鼠标选取文本。
StringSelection text=new StringSelection(temp);
clipboard.setContents(text,null);
}
else if(m==cut){
String temp=display.getSelectedText(); //拖动鼠标选取文本。
StringSelection text=new StringSelection(temp);
clipboard.setContents(text,null);
int start=display.getSelectionStart();
int end =display.getSelectionEnd();
display.replaceRange("",start,end) ; //从display中删除被选取的文本。

}
else if(m==paste){
Transferable contents=clipboard.getContents(this);
DataFlavor flavor= DataFlavor.stringFlavor;
if( contents.isDataFlavorSupported(flavor))
try{ String str;
str=(String)contents.getTransferData(flavor);
display.append(str);
}
catch(Exception ee){}

}
}



}

banq
2009-12-07 17:07
使用Eclipse进行断点跟踪调试,不要寄希望谁能眼睛看出代码BUG,也不要把时间浪费在这个上。