`

swing JTextArea双击进行编辑,ESC还原为只读

阅读更多

java swing

JTextArea 本来是只读的,实现的效果是双击可以编辑,

按Esc 又变为只读

 

双击处理事件

resultTextArea.setEditable(false);
		resultTextArea.setLineWrap(true);
		resultTextArea.setWrapStyleWord(true);
		resultTextArea.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (e.getClickCount() == 2) {
					if (!resultTextArea.isEditable()) {
						resultTextArea.setEditable(true);
						DialogUtil.focusSelectAllTF(resultTextArea);
					}
//					System.out.println("Double Click!");
				}
				super.mouseClicked(e);
			}

		});
public static void focusSelectAllTF(JTextArea ta) {
		ta.requestFocus();
		if (!ValueWidget.isNullOrEmpty(ta.getText())) {
			ta.selectAll();
		}
	}

 

按Esc的监听事件

/***
	 * 按Esc 文本框失去焦点
	 * @param tf
	 */
	public static void addKeyListener22(final JTextComponent tf){
		addKeyListener22(tf, null);
	}
/***
	 * 按Alt+Enter时,用户名文本框聚焦,<br>按Esc 文本框失去焦点
	 * @param tf :密码输入框
	 */
	public static void addKeyListener22(final JTextComponent tf,final JTextComponent tf2){
		tf.addKeyListener(new KeyListener() {
			
			@Override
			public void keyTyped(KeyEvent e) {
			}
			
			@Override
			public void keyReleased(KeyEvent e) {
			}
			
			@Override
			public void keyPressed(KeyEvent e) {
				if ((e.getKeyCode() == KeyEvent.VK_ESCAPE)
						) {
					System.out.println("esc");
					tf.setEditable(false);
				}else if ((e.getKeyCode() == KeyEvent.VK_ENTER)
						&& (((InputEvent) e )
								.isAltDown())) {
					if(!ValueWidget.isNullOrEmpty(tf2)){
						tf2.requestFocus();
						tf2.selectAll();
					}
				}
			}
		});
	}
/**
	 * 判断对象或对象数组中每一个对象是否为空: 对象为null,字符序列长度为0,集合类、Map为empty
	 * 
	 * @param obj
	 * @return
	 */
	public static boolean isNullOrEmpty(Object obj) {
		if (obj == null)
			return true;

		if (obj instanceof CharSequence)
			return ((CharSequence) obj).length() == 0;

		if (obj instanceof Collection)
			return ((Collection) obj).isEmpty();

		if (obj instanceof Map)
			return ((Map) obj).isEmpty();

		if (obj instanceof Object[]) {
			Object[] object = (Object[]) obj;
			if (object.length == 0) {
				return true;
			}
			boolean empty = true;
			for (int i = 0; i < object.length; i++) {
				if (!isNullOrEmpty(object[i])) {
					empty = false;
					break;
				}
			}
			return empty;
		}
		
		return false;
	}

  

附件运行方式:

java -jar share-0.0.3.1-SNAPSHOT.jar

前提:电脑安装java环境

运行界面:

 

 

  • 大小: 31.5 KB
  • 大小: 106 KB
3
1
分享到:
评论
1 楼 longhua2003 2015-06-09  

相关推荐

    java_JTextArea_实现不可修改文本内容、右键菜单

    有时候,我们可能需要创建一个只读的文本区域或者为`JTextArea`添加额外的功能,比如右键菜单,来提高用户体验或实现特定的功能需求。本文将详细介绍如何使用Java Swing中的`JTextArea`组件实现不可修改的文本内容,...

    swing jtextArea滚动条和文字缩放效果

    swing jtextArea是一个组件,用于显示多行文本,可以滚动、编辑和格式化文本。swing jtextArea的滚动条是swing jtextArea的一部分,用于控制文本的滚动。 接下来,让我们了解一下swing jtextArea的文字缩放效果。...

    重定向log4j日志到jtextarea

    而JTextArea是Swing组件库中的一个文本区域,常用于显示多行文本,用户可以读取但不能编辑。在某些情况下,我们可能希望将Log4j的日志输出直接重定向到JTextArea,以便于在GUI应用程序中实时查看日志信息。这在调试...

    JTextArea 实现行号

    在Java Swing库中,`JTextArea` 是一个用于显示和编辑多行文本的组件。有时候在编程时,我们可能需要为 `JTextArea` 添加行号功能,以方便用户阅读和编辑代码或者数据。这个功能可以通过自定义边框来实现,就像标题...

    swing中文乱码问题(Linux和window)

    在Linux系统下使用Swing进行GUI开发时,可能会遇到中文乱码的问题。解决这一问题通常需要对系统的编码环境进行适当的配置。以下是一个详细的步骤指南,帮助开发者解决乱码问题。 **第一步:** 检查系统默认字符集...

    Java弹出菜单,为JTextArea添加了右键弹出式菜单,实现了复制、粘贴、剪切

    今天,我们将学习如何使用 Java 弹出菜单来为 JTextArea 添加右键弹出式菜单,实现复制、粘贴、剪切功能。 一、Java 弹出菜单概述 Java 弹出菜单是一种 context-sensitive 菜单,即在用户点击右键时出现的菜单。它...

    swing 文本编辑器

    3. **Swing JTextArea**: `javax.swing.JTextArea` 是一个简单的文本组件,主要用于显示和编辑多行文本。虽然比 TextPane 更简单,不支持富文本,但可以用来创建基本的文本编辑器。对于简单的文本编辑需求,...

    Java Swing JTextArea文本区域的实现示例

    Java Swing JTextArea 文本区域是 Java Swing 库中的一种基本组件,用于编辑多行文本。JTextArea 组件可以编辑多行文本,并提供了许多有用的方法来处理文本。 概述 JTextArea 是 javax.swing.JTextArea 的实例,...

    最全面的swing文本编辑器

    "最全面的Swing文本编辑器"是一个利用Java Swing构建的高级文本编辑器,旨在提供比标准记事本更丰富的功能,如插入图片、鼠标绘图等。这个编辑器可能是一个很好的示例,用于学习如何在Swing环境中扩展基本组件以实现...

    java swing-JTextArea的使用

    JTextArea是Swing库提供的一个多行文本编辑框组件,可以用于在GUI应用程序中显示和编辑大段文本。

    Swing文本编辑器

    Swing文本编辑器的核心组件是`JTextArea`,这是一个可以显示和编辑多行文本的组件。我们可以使用`JScrollPane`来包裹`JTextArea`,以便在文本内容过多时自动滚动。`JScrollPane`提供了水平和垂直滚动条,使得用户...

    swing写的文本编辑器

    本项目就是一个基于Swing构建的文本编辑器,允许用户进行文本编辑、保存等操作。 在Swing中,主要使用`javax.swing.*`包下的类来构建GUI,例如`JFrame`作为窗口的基础,`JPanel`用于组织组件,`JTextArea`用于显示...

    MyEditor[swing界面-文本编辑器-功能实现版].rar

    本文将深入探讨名为"MyEditor"的文本编辑器,它基于Java Swing库构建,提供了丰富的功能,包括JMenu菜单系统,文本的磁盘打开和保存,以及用户友好的界面编辑。接下来,我们将详细讨论这款编辑器的核心特性及其实现...

    Swing实现编辑器(支持语法高亮)

    在Swing中实现一个编辑器,首先需要理解Swing的基础组件,如JFrame、JPanel和JTextComponent系列。JTextComponent是所有文本组件的基类,包括JTextField、JTextArea和JEditorPane。对于实现一个编辑器,JTextPane或...

    java swing文本编辑器

    Java Swing是Java GUI(图形用户界面)库的一部分,它提供了丰富的组件来构建桌面应用程序,包括一个文本编辑器。在Java Swing中创建一个文本编辑器,我们可以利用`javax.swing.text`包中的类和接口,这些工具使得...

    基于Swing的简单Java编辑器

    **基于Swing的简单Java编辑器** 在Java编程领域,Swing是一个用于构建桌面应用程序的图形用户界面(GUI)工具包。它属于Java Foundation Classes (JFC)的一部分,由Sun Microsystems开发,现在由Oracle公司维护。...

    可视化swing编辑插件

    6. **导入与导出**:可以将现有的Swing代码导入到设计视图中进行编辑,也可以将设计好的界面导出为源代码。 使用Eclipse的Swing编辑插件,开发者能够更高效地创建和管理Swing应用的界面。为了开始使用这个插件,你...

    基于Swing应用程序设计:一个简易的文本编辑框

    2. `JTextArea textArea` 用于显示和编辑文本,初始化时设置为20行40列的大小。 3. `JFileChooser fC` 用于打开文件对话框,让用户选择文件进行打开或保存操作。 4. `JMenuBar` 和 `JMenu` 创建了主菜单栏,包括...

    基于swing的编辑器

    【基于Swing的编辑器】是一种使用Java Swing库开发的文本编辑工具,它提供了一个基本的用户界面,供用户创建、查看和编辑文本文件。Swing是Java Foundation Classes (JFC)的一部分,它为Java应用程序提供了丰富的...

    基于Swing的类似编辑器的界面

    在实际开发中,这样的练习可以帮助程序员巩固Swing基础知识,理解组件的使用和交互,为进一步开发复杂的Java GUI应用打下坚实的基础。通过整理这些功能,开发者可以构建自己的自定义控件库,方便日后项目复用,提高...

Global site tag (gtag.js) - Google Analytics