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){}

}

}

}

2
banq
2009-12-07 17:07

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