关于JTextArea监听的问题

xx289123895 2012-02-08 02:32:07
比如,JTextArea里没有选中的文字,按钮BT1不可用,选中JTextArea内的任意文字,BT1便可用。应该对它添加哪种监听器?
...全文
220 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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);
}
}

51,397

社区成员

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

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