关于JTextArea监听的问题

xx289123895 2012-02-08 02:32:07
比如,JTextArea里没有选中的文字,按钮BT1不可用,选中JTextArea内的任意文字,BT1便可用。应该对它添加哪种监听器?
...全文
204 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xx289123895 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:
引用 1 楼 rickhunterchen 的回复:
这种是文本框内容变化事件。

文本框增加一个事件:ddDocumentListener(DocumentListener listener)。
重写public void insertString(int offset, String str, AttributeSet att)throws BadLocati……
[/Quote]
给你个小程序,你研究一下就明白了,代码:
package Test;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Test extends JFrame {
JTextArea txt;
JButton btn;

public Test() {
txt = new JTextArea(10, 30);
btn = new JButton("copy ");
btn.setEnabled(false);
getContentPane().add(txt);
getContentPane().add(btn, BorderLayout.SOUTH);
MyListener lis = new MyListener();
txt.addMouseMotionListener(lis);
txt.addMouseListener(lis);
txt.addKeyListener(lis);
pack();
setVisible(true);
}

public static void main(String[] args) {
Test t = new Test();
}

private boolean isTextSelected() {
return (txt.getSelectionEnd() - txt.getSelectionStart()) != 0;
}

class MyListener extends MouseAdapter implements MouseMotionListener,KeyListener {
public void mouseDragged(MouseEvent e) {
if (isTextSelected()) {
btn.setEnabled(true);
} else {
btn.setEnabled(false);
}
}

public void mouseMoved(MouseEvent e) {
// do nothing
}

public void mouseReleased(MouseEvent e) {
if (isTextSelected()) {
btn.setEnabled(true);
} else {
btn.setEnabled(false);
}
}

public void keyPressed(KeyEvent e) {
// do nothing
}

public void keyReleased(KeyEvent e) {
if (e.isShiftDown()) {

int code = e.getKeyCode();
if (isArrowKey(code)) {
if (isTextSelected()) {
btn.setEnabled(true);
} else {
btn.setEnabled(false);
}
}
} else {
if (!isTextSelected()) {
btn.setEnabled(false);
} else {
btn.setEnabled(true);
}
}
}

public void keyTyped(KeyEvent e) {
// do nothing
}

private boolean isArrowKey(int keyCode) {
return (keyCode == KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_UP
|| keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_RIGHT);
}

}

}
qq116316213 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 rickhunterchen 的回复:
这种是文本框内容变化事件。

文本框增加一个事件:ddDocumentListener(DocumentListener listener)。
重写public void insertString(int offset, String str, AttributeSet att)throws BadLocationException方法……
[/Quote]
通过什么方法实现了
xx289123895 2012-02-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rickhunterchen 的回复:]
这种是文本框内容变化事件。

文本框增加一个事件:ddDocumentListener(DocumentListener listener)。
重写public void insertString(int offset, String str, AttributeSet att)throws BadLocationException方法。

上一个示例:

Java code
pu……
[/Quote]
没人回。。。通过别的方法实现了,谢谢你的答复 分给你好了
rickhunterchen 2012-02-14
  • 打赏
  • 举报
回复
这种是文本框内容变化事件。

文本框增加一个事件:ddDocumentListener(DocumentListener listener)。
重写public void insertString(int offset, String str, AttributeSet att)throws BadLocationException方法。

上一个示例:
public void insertString(int offset, String str, AttributeSet att)
throws BadLocationException {
if (getLength() + str.length() > maxLength) {
Toolkit.getDefaultToolkit().beep();
} else {
super.insertString(offset, str, att);
}
}
1、 自定义类说明: (1)类名:MainTest 作用:主类,构建主界面 继承的父类:Jframe 主要实现接口:ActionListener 主要成员变量: private JPanel ContentPane; private JButton Insert = new JButton(); private JButton Select = new JButton(); private JButton Update = new JButton(); 内部类:MainTest_actionPerformed,主页面的事件监听。 jenter_ actionPerformed,按钮的事件监听。 主要成员方法: public MainTest() public static void main(String[] args) (2)类名:Insert 作用:实现添加个人信息 继承的父类:Jframe 主要实现接口:ActionListener 主要成员变量: private JPanel ContentPane; private JLabel jlab1 = new JLabel(); private JLabel jlab2 = new JLabel(); private JLabel jlab3 = new JLabel(); private JLabel jlab4 = new JLabel(); private JLabel jlab5 = new JLabel(); private JLabel jlab6= new JLabel(); private JLabel jlab7 = new JLabel(); private JLabel jlab8 = new JLabel(); private JTextField jtextfield1 = new JTextField(); private JTextField jtextfield2 = new JTextField(); private JTextField jtextfield3 = new JTextField(); private JTextField jtextfield4 = new JTextField(); private JTextField jtextfield5 = new JTextField(); private JComboBox jcombobox1 = new JComboBox(); private JComboBox jcombobox2 = new JComboBox(); private JTextArea jtextarea = new JTextArea(); private JButton sure = new JButton(); 内部类:sure_actionperformed,按钮的事件监听,实现对数据的插入。 主要成员方法:public Insert(); (3)类名:Update 作用:对个人信息进行修改。 继承的父类:Jframe 主要实现接口:ActionListener 主要成员变量: private JPanel ContentPane; private JLabel jlab1 = new JLabel(); private JLabel jlab2 = new JLabel(); private JLabel jlab3 = new JLabel(); private JLabel jlab4 = new JLabel(); private JLabel jlab5 = new JLabel(); private JTextField jtextfield1 = new JTextField(); private JTextField jtextfield2 = new JTextField(); private JTextField jtextfield3 = new JTextField(); private JTextField jtextfield4 = new JTextField(); private JButton sure = new JButton(); private JButton upda = new JButton(); 主要成员方法: public Update() public void actionPerformed(ActionEvent e) (4)类名:Select 作用:查询学生个人信息 继承的父类:Jframe 主要实现接口:ActionListener 主要成员变量: private JTextArea taInfo=new JTextArea(); private JPanel panel=new JPanel(); private JTextField jtextfield1=new JTextField(); private JButton jbutton=new JButton("查询"); private JLabel jlabel=new JLabel("学号"); 主要成员方法: public Select() public void actionPerformed(ActionEvent e)
一个很不错的计算机网络课程设计,package com.briup.gui; import java.awt.BorderLayout;//BorderLayout(边布局) 布局管理器类 import java.awt.FlowLayout;//FlowLayout是流式布局 import java.awt.Toolkit;// 工具包 Toolkit 的子类被用于将各种组件绑定到特定本机工具包实现。 import java.awt.event.ActionEvent;//动作事件 import java.awt.event.ActionListener;//事件监听接口 import javax.swing.*; import com.briup.net.WebServerNet; public class WebServerFrame extends JFrame implements ActionListener { // 按钮面板 private JPanel btnPan = new JPanel(new FlowLayout(FlowLayout.CENTER));//创建FlowLayout布局面板,对齐方式为居中(FlowLayout.CENTER) private JLabel listenPortLb = new JLabel("Server listen port: ");//初始化控件(创建服务器监听的端口) private JTextField portTf = new JTextField("80", 5);//初始化控件,创建TextField(文本行类),默认端口号为,长度为 private JButton controlBtn = new JButton("Start");//初始化Button(按钮)(控制)控件 private JButton clearHintBtn = new JButton("Clear Hint");//初始化按钮(claer)控件 // 提示信息面板 private JTextArea hintTa = new JTextArea();//新建一个显示TextArea(纯文本)的多行区域 private WebServerNet net;//创建Web服务器网页 public WebServerFrame() { initComponent();//调用初始化函数,Component(组件类) net = new WebServerNet(this);//实例化一个用户定义的类 } /** *变量的初始化以及此类的入口 */ private void initComponent() { buildBtnPan(); buildHintPan(); setSize(400, 300);//设置窗口的大小 Toolkit tool = Toolkit.getDefaultToolkit();//得到默认的窗口模式 setLocation((tool.getScreenSize().width - this.getSize().width) / 2, (tool.getScreenSize().height - this.getSize().height) / 2); setTitle("Briup WebServer V1.0");//设置面板的标题 setDefaultCloseOperation(EXIT_ON_CLOSE);//设置用户关闭窗口时得操作 setResizable(false);//设置窗口是否可以改变大小,(false)表示不可以改变 setVisible(true);//设置可见,使窗口可见 } /** *新建一个面板 */
package cn.tedu.chart2; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextArea; import javax.swing.JTextField; /** * 客户端窗体 */ public class ClientFrame extends JFrame implements ActionListener, KeyListener { JButton but; JTextArea message; JTextField text; Socket s; ClientThread client; public static void main(String[] args) { new ClientFrame(); } // 在构造函数中对窗体进行初始化 public ClientFrame() { // 取消JFrame的布局 this.setLayout(null); this.setTitle("客户端"); this.setBounds(100, 20, 400, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 聊天记录 --- JTextArea message = new JTextArea(); message.setBounds(10, 10, 360, 200); // 设置聊天记录不能修改 message.setEditable(false); this.add(message); // 信息发送 JTextField JButton text = new JTextField(); text.setBounds(10, 260, 250, 40); text.addKeyListener(this); this.add(text); but = new JButton("发送"); but.setBounds(280, 260, 100, 40); // 给but按钮添加动作监听 but.addActionListener(this); this.add(but); this.setVisible(true); // 和服务器取得联系 try { s = new Socket("127.0.0.1", 65000); client = new ClientThread(s, message); client.start(); } catch (Exception e) { e.printStackTrace(); } } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == but) { if (!s.isClosed()) { String data = text.getText(); if (!"".equals(data)) { // 向服务器发送信息 client.send(data); // 清空文本框 text.setText(null); } }else { //在关闭状态下点击发送按钮 JOptionPane.showMessageDialog(null, "Socket连接已关闭,不能发送信息!", "提示", JOptionPane.ERROR_MESSAGE); } } } public void keyTyped(KeyEvent e) {} @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER) { if (!s.isClosed()) { String data = text.getText(); if (!"".equals(data)) { // 向服务器发送信息 client.send(data); // 清空文本框 text.setText(null); } }else { //在关闭状态下点击发送按钮 JOptionPane.showMessageDialog(null, "Socket连接已关闭,不能发送信息!", "提示", JOptionPane.ERROR_MESSAGE); } } } public void keyReleased(KeyEvent e) {} }

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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