Swing怎么实现点击一个按钮,自动复制jtextarea里面的文本?

hmilyld 2007-08-08 05:09:45
RT
点击一个按钮后,就把jtextarea里面的文本信息复制一下,相当于选中后CTRL+C?
...全文
494 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmilyld 2007-08-09
  • 打赏
  • 举报
回复
谢了楼下的.:)
搞定.
boby 2007-08-08
  • 打赏
  • 举报
回复
你说的剪贴板功能啊,看看Clipboard类把,顺便给你个例子:

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

public class CutAndPaste extends JFrame {
private JMenuBar mb = new JMenuBar();

private JMenu edit = new JMenu("Edit");

private JMenuItem cut = new JMenuItem("Cut"), copy = new JMenuItem("Copy"),
paste = new JMenuItem("Paste");

private JTextArea text = new JTextArea(20, 20);

private Clipboard clipbd = getToolkit().getSystemClipboard();

public CutAndPaste() {
cut.addActionListener(new CutL());
copy.addActionListener(new CopyL());
paste.addActionListener(new PasteL());
edit.add(cut);
edit.add(copy);
edit.add(paste);
mb.add(edit);
setJMenuBar(mb);
getContentPane().add(text);
}

class CopyL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = text.getSelectedText();
if (selection == null)
return;
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
}
}

class CutL implements ActionListener {
public void actionPerformed(ActionEvent e) {
String selection = text.getSelectedText();
if (selection == null)
return;
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
text.replaceRange("", text.getSelectionStart(), text
.getSelectionEnd());
}
}

class PasteL implements ActionListener {
public void actionPerformed(ActionEvent e) {
Transferable clipData = clipbd.getContents(CutAndPaste.this);
try {
String clipString = (String) clipData
.getTransferData(DataFlavor.stringFlavor);
text.replaceRange(clipString, text.getSelectionStart(), text
.getSelectionEnd());
} catch (Exception ex) {
System.err.println("Not String flavor");
}
}
}

public static void main(String[] args) {
run(new CutAndPaste(), 300, 200);
}

public static void run(JFrame frame, int width, int height) {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(width, height);
frame.setVisible(true);
}
}
ukeychen 2007-08-08
  • 打赏
  • 举报
回复
up
hmilyld 2007-08-08
  • 打赏
  • 举报
回复
不是这个意思,
这样是得到那个文本,
我想要的是,点击一个 复制 按钮,
然后到其他地方,比如说自己新建个记事本之类的就能粘贴了这样的.
boby 2007-08-08
  • 打赏
  • 举报
回复
给按钮加个ActionListener,再加一个String,比如String copyText ,
点按钮后copyText = JTextArea.getText();
java编写的类似文本编辑器的代码 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.*; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.BufferedReader; import java.io.IOException; import java.io.BufferedInputStream; import javax.swing.*; import javax.swing.border.BevelBorder; import javax.swing.event.*; import javax.swing.filechooser.FileFilter; import javax.swing.text.BadLocationException; import javax.swing.tree.DefaultMutableTreeNode; public class SimpleEditor extends JFrame //继承窗体类 { /*定义菜单栏,菜单和菜单选项*/ JMenuBar menuBar1=new JMenuBar(); JMenu fileMenu=new JMenu("File"); JMenu editMenu=new JMenu("Edit"); JMenu optionMenu=new JMenu("Option"); JMenu advanceMenu=new JMenu("Advance"); JMenu helpMenu=new JMenu("Help"); JMenuItem newMenuItem=new JMenuItem("new"); JMenuItem openMenuItem=new JMenuItem("Open"); JMenuItem saveMenuItem=new JMenuItem("Save"); JMenuItem exitMenuItem=new JMenuItem("exit"); JMenuItem findMenuItem=new JMenuItem("Find"); JMenuItem findNextMenuItem=new JMenuItem("Find Next"); JMenuItem replaceMenuItem=new JMenuItem("Replace"); JMenuItem compileMenuItem=new JMenuItem("Compile"); JMenuItem buildMenuItem=new JMenuItem("Build"); JMenuItem stopFlashMenuItem=new JMenuItem("Stop Flash"); JMenuItem startFlashMenuItem=new JMenuItem("Start Flash"); JMenuItem helpMenuItem=new JMenuItem("Help"); JMenuItem copyMenuItem=new JMenuItem("Copy"); JMenuItem cutMenuItem=new JMenuItem("Cut"); JMenuItem pasteMenuItem=new JMenuItem("Paste"); /*文件内容显示区*/ JTextArea[] fileTextAreas=new JTextArea[10];//文件区 JTextArea concloseTextArea=new JTextArea(); //控制台信息 JScrollPane [] fileScrollPanes=new JScrollPane[10];//文件视图 JScrollPane concloseScrollPane;//控制台的视图 JTabbedPane fileTabbedPane=new JTabbedPane();//视图的切换用 /*工具栏及工具栏上的按钮*/ JToolBar toolBar=new JToolBar(); JButton openButton=new JButton(new ImageIcon(loadImage("image/open.GIF"))); JButton newButton=new JButton(new ImageIcon(loadImage("image/new.GIF"))); JButton saveButton=new JButton(new ImageIcon(loadImage("image/save.GIF"))); JButton helpButton=new JButton(new ImageIcon(loadImage("image/help.GIF"))); JButton exitButton=new JButton(new ImageIcon(loadImage("image/close.GIF"))); JButton compileButton=new JButton(new ImageIcon(loadImage("image/compile.GIF"))); JButton buildButton=new JButton(new ImageIcon(loadImage("image/build.GIF"))); JButton copyButton=new JButton(new ImageIcon(loadImage("image/copy.GIF"))); JButton cutButton=new JButton(new ImageIcon(loadImage("image/cut.GIF"))); JButton pasteButton=new JButton(new ImageIcon(loadImage("image/paste.GIF")));
试验1. 实验要求 (1)熟悉javac、java等命令的使用,熟悉使用Java编辑器。 (2)编写一个Java Application程序,接受用户从键盘输入的10个整数,比较并输出其中的最大值和最小值。要求程序能对非法数据进行处理。 (3)编写一个Java Application程序,从键盘读取年份,输出该年份是否为闰年。要求程序能对非法数据进行处理。 实验2 编写一个复数类ComplexNumber,其中包括实例变量real、image,方法如下: 1)构造方法 ComplexNumber(double a,double b) 2) ComplexNumber add(ComplexNumber x) //当前复数对象与另一复数对象进行复数的加法运算,返回一新的复数对象 3) ComplexNumber sub(ComplexNumber x) //当前复数对象与另一复数对象进行复数的减法运算,返回一新的复数对象 4)double getReal () //获取复数对象的实部 5)double getImage () //获取复数对象的虚部 6)void show( ) //按照实部+虚部i(如10+8i)的形式显示复数对象的值 7)String toString()//返回复数对象对应的串(如4+7i) (2)编写一个主类,定义并实例化两个复数对象,输出这两个复数对象的值,然后进行复数的加法和减法运算,输出其运算结果(对象)的值。 实验3 编写Application程序实现小型公司的工资管理。该公司主要有4类人员:经理(Manager)、兼职技术人员(Technician)、销售员(Salesman)和销售经理(SalesManager)。要求记录这些人员的编号、姓名和月工资,计算他们的月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;兼职技术人员按每小时100元领取月薪;销售人员按该当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的0.5%。 实验4 编写一个简单的文本编辑程序。 (1)要求在容器Frame/JFrame中放置一个菜单条(MenuBar)。该菜单条至少包括2个菜单(Menu):文件(F)和帮助(H)。文件菜单至少包括以下菜单项:新建、打开、关闭、保存、另存为、退出。帮助菜单包括以下菜单项:联系我们、关于。 (2)提供快捷工具栏,包括新建、打开及保存等功能(这部分根据自己的情况选做)。如单保存按钮能将TextArea或JTextArea文本保存到指定的文件中。 提示:用java.awt.TextArea或javax.swing.JTextArea作为文本编辑窗口,用java.io.FileWriter写文件。
"实验题目 "简易写字板软件设计 " "一、实验目的 " "通过编写Java的应用系统综合实例——简易写字板软件,总结、回顾和实践面向 " "对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将 " "学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并 " "增强对程序设计整体思路的把握。 " "建议程序使用Eclipse集成开发环境完成,熟悉在集成开发环境下编写Java程序" "。 " "二、设备与环境 " "硬件:多媒体计算机 " "软件:Windows 2000以上的操作系统、JDK开发包、集成开发环境 " "三、实验内容 " "总体要求:程序界面友好,代码的可维护性好,包括必要的注释和相应的文档 " "。 " "具体要求:基本的文本录入,字符修改,删除,换行,粘贴,复制,剪切等功 " "能,主要包括: " "菜单栏设计及功能实现:菜单栏主要包括文件、编辑、格式、帮助等常见菜单 " "。 " "其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有剪切、 " "复制、粘贴、查找和查找替换等功能;格式菜单含有对文字字体、字型、字号 " "及颜色等的设置功能。 " "编辑区设计:对文本的编辑处理区。 " "工具栏设计:可根据需要增加该项功能。 " "其他功能设计。 " "四、实验结果及分析 " "(一)、图形界面如下图 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "(二)、设计思路及实现功能 " "创建了一个标题为"简易写字板"的窗体,其中包括菜单栏(菜单及菜单项)、 " "工具栏,并能通过点鼠标右键进行一些基本操作。 " "实现的功能:对文件的新建、打开、保存、另存、退出;对文本的剪切、复制 " "、粘贴、全选、查找、查找并替换;对文本字体、颜色的设置;点鼠标右键 " ",实现文本的剪切、复制、粘贴、全选;当选择新建、关闭、退出、保存时 " "有一定的保存文件的提示。 " "(三)、结构分析 " "(1)、菜单栏:利用类JMenuBar创建一个菜单条的实例menubar,并利用类Jme" "nu创建了四个菜单的实例menu1、menu2、menu3、menu4分别为文件、编辑、格 " "式、帮助,如下图所示 " " " " 文件菜单:其中包括利用类JmenuItem创建了五个菜单项新建、打开、保存、 " "另存为、退出 " " " " " " " " " " " " " " " " 编辑菜单:包括剪切、复制、粘贴、删除、查找、查找并替换、全选菜单项," "同样用类JmenuItem创建 " " " " " " " " " " " " " " " " " " 格式菜单:包括字体、颜色、自动换行,其中为自动换行菜单项添加了复选框" ",应用类JcheckBoxMenuItem创建 " " " " " " " " " " " " " " " " 帮助菜单:包括帮助主题、关于写字板两个菜单项 " "(2)、工具栏:包括运用类JButton创建的按钮new1 ,open1, " "save1,cut1,paste1,copy1,分别为新建、打开、保存、剪切、复制、粘贴。 " "(3)、弹出菜单(鼠标右):应用类JpopupMenu创建一个弹出菜单的实例pm," "并将菜单项itemcopy1,itemcut1,itempaste1,itemqx1依次添加到弹出菜单。 " "(四)、代码分析 " "总体结构概述:程序包括一个公共类sy,与四个类,分别为窗口建立的类First" "Window,查找并替换的类change,查找的类check,字体设置的类Fontext;其 " "中所引用到了Java提供的软件包java.awt.*; java.awt.event.*;x.*; " "javax.swing.*;实现各个组件的功能在窗口建立的类中为各个组件添加监听器 " ",并实现监听器,类change、check、Fontext分别为实现查找并替换、查找、 " "字体监听器而建立的类,在类FirstWindow中调用上述三种类中的方法以实现监" "听器,将其放在类FirstWindow的外部,增强代码的可读性,具体实现过程如下" ": " "(1)、FirstWindow类 " " 先对所要建立的各个组件进行声明,如JMenuBar menubar; JMenu " "menu1,menu2,menu3,menu4; JTextArea text1; JCheckBoxMenuItem " "box;在构造方法FirstWindow中对所要建立的窗体进行初始化,代码如下: " "setTitle(s);
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 【关键字】设计 Java高级程序设计第二学期 期末复习题 判断题 1. 2. java.awt包是Java语言用来构建图形用户界面(GUI)的类库。( ) 3. 容器,一个容器可以容纳多个构件,并使他们成为一个整体。( ) 4. Java中所有的类都是通过直接或间接地继承 5. Java的图形用户界面的最基本的组成部分就是构件(Component)。( ) 6. 在Swing中用重量级的构件替代了AWT中的轻量级的构件。(X) 7. 与AWT构件不同,Swing构件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(contentPane)上。( ) 8. 类Panel默认的布局管理器是GridLayout。(X) 9. 每个Java小应用程序必须定义为Jframe类的子类。( ) 10. 使用UDP通信时,用DatagramPacket类把要发送的信息打包。( ) 11.AWT组件称为重型组件( ) 12.Swing组件称为轻型组件( ) 13.容器类不是GUI组件(X) 14.使用add方法可以在框架的内容窗格中添加组件( ) 15.FlowLayout 是最简单的布局管理器( ) 16.布局管理器GridLayout不是以网格(矩阵)的形式排列组件(X) 17.布局管理器的属性不可以动态的改变(X) 18.每一时刻,一个容器只能有一个布局管理器( ) 19.要创建一个用户界面,需要创建一个框架或applet来存放用户界面组件( ) 20.Component类是所有用户界面的父类( ) 21. JFrame实例可以添加到容器中。( F ) 22. JCheckBox继承了AbstractButton类的所有属性。( T ) 23. JTextArea可以让用户输入多行文字。( T ) 24. JSlider与JScrollbor类似,但是JSlider具有更多的属性和更多是显示形式。( T ) 25.JTextField类继承了JTextComponent类,而JTextComponent类继承JComponent类。( T ) 26. 从应用程序创建一个子窗口,不用先创建JFrame的一个子类。( F ) 27. 在一个文本域中按下回车键就触发了ActionEvent事件。( T ) 28. Java使用事件委托处理模型来处理事件,源东西和监听东西可以是同一个东西。( T ) 29. JDBC是指Java程序与数据库连接的一种机制。( T ) 30.可以给一个面板添加框架。(F ) 31. File类提供实现文件读写的操作方法。 (T) 32. (T) 33.垂直文本位置指定文本相对于图标的垂直位置。(T) 34.不可以同时设置按钮上的文本和图标。(F) 35.标签是显示一小段文字、一幅图片或者二者皆有的区域。(T) 36.组合框是包含项目的一个列表,用户可以从中进行选则。(T) 37. 用read()方法读取文件内容时,返回-1表示文件结束。(F) 【设计】java高级程序设计期末复习题全文共16页,当前为第1页。38. PrintWriter类和PrintStream类可以以文本方式输入基本类型数据值、字符串和东西。(F) 【设计】java高级程序设计期末复习题全文共16页,当前为第1页。 39. 代表优先级的常数值越大优先级越低 (F) 40. 线程一旦被创建,则自动运行 (F ) 二、单选题 1、下列关于Java线程的说法那些是正确的( B ) A、每一个Java线程可以看成由代码、一个真实的CPU以及数据三部份组成。 B、创建线程的两种方法中,从Thread类中继承的创建方式可以防止出现多父类问题。 C、Thread类属于java.util程序包。 D、以上说法无一正确。 2、运行下列程序, 会产生什么结果?( D ) public class X extends Thread implements Runable{ public void run(){ "this is run()"); } public static void main(String args[]) { Thread t=new Thread(new X()); t.start(); } } A、第一行会产生编译错误 B、第六行会产生编译错误 C、第六行会产生运行错误 D、程序会运行和启动 3、下列选项中,用于定义接口的关键字是( C ) A、import B、implements C、interface D、protected 4.定义类头时能使用的修饰符是( C )。 A) private B) static C) abstract D) pr

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧