首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

为什么小弟我的复制剪切功能不能实现,请大家棒小弟我修改下

2012-01-22 
为什么我的复制剪切功能不能实现,请大家棒我修改下import java.awt.datatransfer.Clipboardimport java.a

为什么我的复制剪切功能不能实现,请大家棒我修改下
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.*;
import java.io.*;
import javax.swing.JMenu;
import javax.swing.*;
import java.awt.*;

public class TestMenu
{
  public static void main(String args[])
  {
  MyMenuFrame mf = new MyMenuFrame();
  }
}

class MyMenuFrame extends Frame
{
MenuBar m_MenuBar;
Menu menuFile, menuEdit,menuFont;
MenuItem mi_File_Open,mi_File_Close,mi_File_Exit;
MenuItem mi_Edit_Cut, mi_Edit_Copy, mi_Edit_Paste,mi_Edit_Find,mi_Edit_All;
CheckboxMenuItem mi_Font_Style, mi_Font_Size;
TextArea ta;
FileDialog fd;
String str="";
String ta_Font_Name;
Clipboard clipboard = null;
BufferedReader br;
FileReader fr;
BufferedWriter bw;
FileWriter fw;
int ta_Font_Style,new_Style, ta_Font_Size,new_Size;
FileDialog fdialog= new FileDialog(this,"文件对话框",FileDialog.LOAD);
MyMenuFrame()
{
super("拥有菜单的窗口");
ta = new TextArea(5,30);

add(ta,BorderLayout.CENTER);
m_MenuBar = new MenuBar();
menuFile = new Menu("文件");
mi_File_Open = new MenuItem("打开");
mi_File_Open.setShortcut(new MenuShortcut(KeyEvent. VK_O));
mi_File_Close = new MenuItem("关闭");
mi_File_Exit = new MenuItem("退出");
mi_File_Open.addActionListener(new HandleActFile1(this));
mi_File_Close.addActionListener(new HandleAct());
mi_File_Exit.addActionListener(new HandleAct());
menuFile.add(mi_File_Open);
menuFile.add(mi_File_Close);
menuFile.addSeparator();
menuFile.add(mi_File_Exit);
m_MenuBar.add(menuFile);
menuEdit = new Menu("编辑");
mi_Edit_Cut = new MenuItem("剪切");
mi_Edit_Cut.setShortcut(new MenuShortcut(KeyEvent. VK_X));
mi_Edit_Copy = new MenuItem("复制");
mi_Edit_Copy.setShortcut(new MenuShortcut(KeyEvent. VK_C));
mi_Edit_Paste = new MenuItem("粘贴");
mi_Edit_Paste.setShortcut(new MenuShortcut(KeyEvent. VK_V));
mi_Edit_Find= new MenuItem("查找");
mi_Edit_Find.setShortcut(new MenuShortcut(KeyEvent. VK_F));
mi_Edit_All=new MenuItem("全选");
mi_Edit_All.setShortcut(new MenuShortcut(KeyEvent. VK_A));
mi_Edit_Cut.addActionListener(new HandleActFile1(this));
mi_Edit_Copy.addActionListener(new HandleActFile1(this));
mi_Edit_Paste.addActionListener(new HandleActFile1(this));
mi_Edit_Find.addActionListener(new HandleActFile1(this));
mi_Edit_All.addActionListener(new HandleAct6());
menuEdit.add(mi_Edit_Cut);
menuEdit.add(mi_Edit_Copy);
menuEdit.add(mi_Edit_Paste);
menuEdit.add(mi_Edit_Find);
menuEdit.add(mi_Edit_All);
m_MenuBar.add(menuEdit);
menuFont=new Menu("文字");
mi_Font_Style = new CheckboxMenuItem("粗体");
mi_Font_Size = new CheckboxMenuItem("大字体");
mi_Font_Style.addItemListener(new HandleItem1());
mi_Font_Size.addItemListener(new HandleItem2());
menuFont.add(mi_Font_Size);
menuFont.add(mi_Font_Style);
m_MenuBar.add(menuFont);
this.setMenuBar(m_MenuBar);
setSize(400,200);
setVisible(true);
ta_Font_Name = (ta.getFont()).getName();
ta_Font_Style = (ta.getFont()).getStyle();
new_Style = ta_Font_Style;
ta_Font_Size = (ta.getFont()).getSize();
new_Size = ta_Font_Size;
this.addWindowListener(new HandleWin());
}

class HandleAct implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Frame ff=new Frame();
ConfirmDlg confirm=new ConfirmDlg(ff);
if(e.getActionCommand()=="退出")
{
if(confirm.ans)
{

  ff.dispose();


  System.exit(0);
}
}

else
ta.setText("\n\n\n\t\t\t"+""+e.getActionCommand());
}
}
class HandleAct6 implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
int end=ta.getText().length();
ta.setSelectionStart(0);
ta.setSelectionEnd(end);
}
}

class HandleItem1 implements ItemListener
 {
  public void itemStateChanged(ItemEvent e)
  {
 if(((CheckboxMenuItem)e.getSource()).getState())
  {
  new_Style = Font.BOLD;
  ta.setFont(new Font(ta_Font_Name,new_Style,new_Size));
  ta.setText("\n\n\n\t\t\t"+"你选择了粗体");
  }
  else
  {
  new_Style = ta_Font_Style;
  ta.setFont(new Font(ta_Font_Name,new_Style,new_Size));
  ta.setText("\n\n\n\t\t\t"+"你没有选择粗体");
  }
}
}

class HandleItem2 implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if (((CheckboxMenuItem)e.getSource()).getState())
{
new_Size = ta_Font_Size * 2;
ta.setFont(new Font(ta_Font_Name,new_Style,new_Size));
ta.setText("\n\n\n\t\t\t"+"你选择了大字体");
}
else
{
new_Size = ta_Font_Size;
ta.setFont(new Font(ta_Font_Name,new_Style,new_Size));
ta.setText("\n\n\n\t\t\t"+"你没有选择大字体");
}
}
}

class HandleClose extends WindowAdapter
  {
  public void windowClosing(WindowEvent e)
  {
  dispose();
  System.exit(0);
  }
  }
  
  class HandleActFile implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="打开")
{

fdialog.setSize(200,100);
fdialog.setVisible(true);
}

}
}
 
  class HandleActFile1 implements ActionListener
{
Frame f;
HandleActFile1(Frame ff)
{
f=ff;
}
public void actionPerformed(ActionEvent e)
{

if(e.getActionCommand()=="打开")
{
ta.setText("");
fd=new FileDialog(f,"打开文件",FileDialog.LOAD);
fd.setDirectory("e:\\java作业");
fd.setVisible(true);
  try{
File myfile=new File(fd.getDirectory(),fd.getFile());
BufferedReader raf= new BufferedReader(new FileReader(myfile));
String s = raf.readLine();
while(s!= null)
{

ta.append(s+"\n");
s = raf.readLine();
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}

}
 if(e.getActionCommand()=="复制")
 {
  String temp = ta.getSelectedText();
  StringSelection selectText = new StringSelection(temp);
  clipboard.setContents(selectText, null);
}
if(e.getActionCommand()=="剪切")
 {
  String temp = ta.getSelectedText();
  StringSelection selectText = new StringSelection(temp);
  clipboard.setContents(selectText, null);
  int start = ta.getSelectionStart();
  int end = ta.getSelectionEnd();
  ta.replaceRange("", start, end);
}
if(e.getActionCommand()=="粘贴")

{
  Transferable content = clipboard.getContents(this);
  DataFlavor flaver = DataFlavor.stringFlavor;
  if (content.isDataFlavorSupported(flaver)) {
  try {
  String temp = (String) content.getTransferData(flaver);
  ta.append(temp);
  } catch (UnsupportedFlavorException ie) {
  ie.printStackTrace();
  } catch (IOException ie) {


  ie.printStackTrace();
  }
  }
  }
 }
}
class HandleWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{Frame f=(Frame)(e.getWindow());
ConfirmDlg confirm=new ConfirmDlg(f);
if(confirm.ans)
{
f.dispose();
System.exit(0);
}
}
}

class ConfirmDlg implements ActionListener
{
Dialog dlg;
Label message= new Label("是否关闭窗口");
Button btnY=new Button("是");
  Button btnN=new Button("否");
  Panel p1=new Panel();
  Panel p2=new Panel();
  boolean ans;
   
  ConfirmDlg(Frame own)
  {
  btnY.addActionListener(this);
  btnN.addActionListener(this);
  dlg=new Dialog(own,"确认对话框",true);
 
  p1.add(message);
  p2.add(btnY);
  p2.add(btnN);
  dlg.add(p1,BorderLayout.NORTH);
  dlg.add(p2,BorderLayout.SOUTH);
  dlg.setSize(200,100);
  dlg.setVisible(true);
  }
  public void actionPerformed(ActionEvent e)
  {
  dlg.dispose();
  if(e.getActionCommand()=="是")
  ans=true;
  else
  ans=false;
  }
}
}


[解决办法]
jdk安装目录下 也有相关的源码 
楼主可以抽空去看看

热点排行