Swing中快捷键的问题[TextArea]

一步步码记事本(Java版)--麻雀虽小五脏俱全 阅读详情

问题:

在Swing的JTextArea中,我们敲回车键是换行。现在我想用Ctrl+Enter来替代,不知道这个事件应如何处理??我已经可以判断出Ctrl+Enter同时按下的情况了,但是不知道如何达到原来只按Enter的效果。对于原来的Enter键,现在的功能是想让它移到下一个控件上。

解决:

写一个继承于JTextArea的类,同时实现几种方法即刻。或是在我们自己的类中,加入如下的方法。

import hoksoftbuhin.HTextArea;

import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.Hashtable;

import javax.swing.Action;
import javax.swing.KeyStroke;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.JTextComponent;
import javax.swing.text.Keymap;

/*
 * Created on 2004-8-13
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */

/**
 * @author Administrator
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class TestArea extends HTextArea {
 private Hashtable actionTable = new Hashtable();
 
 public TestArea() {
  super();
  loadActionTable();
  setKeymap(createKeymap());
 }

 /**
  * 在Keymap中,增加对Ctrl+Enter同时按下的处理。
  * @return
  */
 private Keymap createKeymap() {
  Keymap map =
   JTextComponent.addKeymap("applet keymap", getKeymap());

  KeyStroke returnKeyStroke =
   KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK);
  Action returnAction = getAction(DefaultEditorKit.insertBreakAction);

  map.addActionForKeyStroke(returnKeyStroke, returnAction);
  return map;
 }

 
 /**
  * 获得原先动作的一个集合
  *
  */
 private void loadActionTable() {
  Action[] actions = getActions();

  for (int i = 0; i < actions.length; ++i) {
   actionTable.put(actions[i].getValue(Action.NAME), actions[i]);
  }
 }

 
 /**
  * 根据名字,来获得相应的Action
  * @param name
  * @return
  */
 private Action getAction(String name) {
  return (Action) actionTable.get(name);
 }

 
}


以上代码实现了Ctrl+Enter换行的功能。

=============================

至于屏蔽原先的Enter的功能,现在是用别的方法来替代了,没有找到真正能Remove掉该方法。

扩充一下createKeymap()方法。

 private Keymap createKeymap() {
  Keymap map =
   JTextComponent.addKeymap("applet keymap", getKeymap());

  KeyStroke returnKeyStroke =
   KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK);
  Action returnAction = getAction(DefaultEditorKit.insertBreakAction);

  map.addActionForKeyStroke(returnKeyStroke, returnAction);

KeyStroke returnKeyStroke2 =
     KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0);
  Action returnAction2 = getAction(DefaultEditorKit.endWordAction);
  map.addActionForKeyStroke(returnKeyStroke2, returnAction2);

  return map;
 }

  这样即刻取消掉原先的换行,但并没有从根本得到解决。

大模型训练和推理 大模型训练moe是指混合专家(Mixture-of-experts,简称MoE)的,这是一种用于提高大型神经网络性能的技术,它可以将模型的一部分替换为多个专家,每个专家只负责处理一部分输入数据,从而增加模型的参数量和表达能力,同时减少计算量和训练时间。指令可以作为模型的输入的一部分,也可以作为模型的输出的一部分,具体取决于任务的类型。上下文扩展技术的,这是一种用于提高大型语言模型(LLM)对长文本的处理能力的技术,它可以让模型在不增加参数量的情况下,扩展其注意力范围,从而提高模型的语言理解和生成能力。 阅读详情

相关推荐

上海交大计算机保研面试 2026:3类专项计划与10个联培方向深度解析

本文深度解析2026年上海交通大学计算机保研面试的3类专项计划与10个联培方向,包括区块链技术、智能计算系统和网络安全专项,以及蚂蚁科技、苏州智研院等联培基地。文章详细介绍了各专项的核心课程、硬件资源和就业去向,为计算机专业学生提供全面的申请策略和职业发展建议。

weixin_31528001的博客 396

Java文本框监听回车(KeyEvent事件)

JTextArea textArea = new JTextArea(); textArea.addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { if((char)e.getKeyChar()==KeyEvent.VK_ENTER) { System.out.println("E...

XerCis的博客 1万+

FUEL算法解读(一)——框架解读,思维导图可以很清晰看懂算法启动框架,已更新完,图太大放不上来链接在文末

一图看懂FUEL算法节点框架!!!

weixin_43793717的博客 2784

6.文本框和文本区

在图形界面中,文本框和文本区是用于信息输入输出的组件。 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框。JTextField类用来建立文本框。与文本框相关的接口是ActionListener。 文本框处理程序的基本内容有以下几个方面: 声明一个文本框名。建立一个文本框对象。将文本框对象加入到某个容器。对需要控制的文本框对象注册监视器,监听文本框的输入结

1646

Reality Capture控制点修复/合并模型

通过增加控制点/修改对齐设置参数来修复模型被分为两个部分的解决方法

草履虫建模的博客 5239

保姆级教程:用Python+Mediapipe实时捕捉手势,驱动Unity虚拟手模型(附完整源码)

本文详细介绍了如何利用Python的Mediapipe库和Unity实现实时手势识别与虚拟手模型驱动。通过OpenCV进行图像采集,Mediapipe提供21个手部关键点识别,结合UDP通信协议实现Python与Unity之间的低延迟数据传输。教程包含完整源码、环境配置、核心代码实现及性能优化技巧,适用于VR教育、游戏开发等需要自然交互的场景。

weixin_42531779的博客 361

在JTextField中监听回车键,并执行相应按钮

在jbInit() 中加入jTextField1的按键监听,代码如下:    jTextField1.addKeyListener(new KeyAdapter(){       public void keyPressed(KeyEvent e)          {            if(e.getKeyChar()==KeyEvent.VK_ENTER )   //按回车键执行相应操作...

weixin_33894640的博客 906

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1001

Swing编程——快捷键设置方法的优劣对比(二)

模拟QQ简易网络聊天程序的发送信息快捷键设置相关问题~

sparksun007的专栏 868

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2332

手把手完整实现STM32+ESP8266+MQTT+ThingsCloud云平台+Android App及iOS App及微信小程序及Web App应用

本教程文章完整记录实现STM32+ESP8266+MQTT+ThingsCloud云平台+Android App及iOS App及微信小程序及Web App应用。

嵌入式阿齐Archie 1万+

如何在 JavaFX 的 TextArea 实现回车发送信息而不换行,但组合键 Ctrl + Enter 换行

在onKeyPressed的回调方法中,当用户输入的是普通的按键时,光标的位置为输入该字符之前的位置(刚刚输入的字符尚未在文本框中生效)。这意味着,如果输入的是Enter,则当onKeyPressed的回调方法触发时,文本框中不仅包含换行符,而光标在该换行符之后。这意味着,在按下但不松开Ctrl键之后,输入Enter时,输入的文本不会包含换行符,因为TextArea不认为此时输入的是Enter。但如果依次按下(不松开)对于Enter,需要清除换行符,而输入的换行符位于光标的左边。...

暗诺星刻的博客 4442

ADB加密实例

主要介绍如何给adb命令增加加密访问

四儿家的小祖宗的博客 2909

[原创]Swing中快捷键的问题[TextArea]

问题:在Swing的JTextArea中,我们敲回车键是换行。现在我想用Ctrl+Enter来替代,不知道这个事件应如何处理??我已经可以判断出Ctrl+Enter同时按下的情况了,但是不知道如何达到原来只按Enter的效果。对于原来的Enter键,现在的功能是想让它移到下一个控件上。解决:写一个继承于JTextArea的类,同时实现几种方法即刻。或是在我们自己的类中,加入如下的方法。import

技术专栏 1329

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java textarea 右键_Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能

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

weixin_35692051的博客 295

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java undo_Java 输入框 undo

类UndoTextArea:package com.pass.component;import java.awt.event.ActionEvent;import javax.swing.AbstractAction;import javax.swing.JTextArea;import javax.swing.KeyStroke;import javax.swing.event.Undoable...

weixin_32214771的博客 261

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java 记事本 缓冲保存_Java简易实现记事本的打开与保存

记事本的打开与保存一些总结* Swing中有时方法不显示,需要把方setVisible(true)放到最后执行* AWT中的TextArea默认是中间布局* fileDialog对话框Load模式需要对取消事件进行处理* 快捷键使用需要用到JmenuItem主方法package cn.work.demo.demo03;public class NotePad {public static void...

weixin_33628677的博客 223

记事本程序

记事本程序设计

cy_426的博客 429

一个JTextArea的重构

package fr.itris.glips.svgeditor.properties.database; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.MouseAdapte...

suyijianke的博客 176

java textarea 换行问题处理\n

在java中,textarea存入数据库时,文本框的换行存储的是一个看不到的换行符号(其实就是\n),但是读取出来后,放回到textarea的时候,变成了\n。 这时,需要在java代码里进行些处理后再展示。//而 '\' 又需要转义成 '\\'才行。 //在java被当成了字符,所以需要重新转换下 if(values!=null && values.indexOf("\\n")!=-1){

洛少的专栏 1万+

swing 输入框捕获回车事件

捕获键盘事件中得回车按键(KeyEvent.VK_ENTER),实现KeyListener接口。 测试程序代码如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class text extends JFrame implements KeyListener {    p

WANGHUAIDONG47488495的博客 6362

Java设置快捷键

/** *  */package test;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import test.GetKey;;/** * @author cyl *///在JTextArea中输入B的快捷键,然

塞翁失马 3882

Java——JTextArea文本域的换行问题

文本域换行问题

桂的博客 3558

Swinghacks——带搜索功能的JTextArea

先上图看效果: 搜索匹配用的是正则表达式,当然直接字符匹配也是ok的,关键不在与怎么匹配,关键是获取匹配结果的开始和结束位置 关于java正则表达式的使用,可以参考这2篇文章 java使用正则表达式http://blog.youkuaiyun.com/laizhenhai88/article/details/7293418 正则表达式基础http://blog.youkuaiyun.com/laizhen

妈妈说有这么一群人 1689

输入框的回车事件

//bind 可以换成on$('#inputtext').bind('keypress',function(event){          //13 代表的是回车健          if(event.keyCode == 13)               {               alert('你点击了回车');           }       });...

狂奔的黑驴 2358

监听textarea敲回车执行换行操作

在easyui的页面中,ie可能不支持在textarea敲回车后换行 那么这里我们就重新对textarea做处理、 首先, 在html页面内容加上textarea的输入文本区域 `&amp;amp;lt;textarea type=&amp;quot;text&amp;quot; id=&amp;quot;aidChildBirthDiagnosisOther&amp;quot; maxlength=&amp;quot;120&amp;quot;

u012220753的博客 7610
上一篇: Eclipse生成Swing应用程序以及用Java Web Start发布
下一篇: Eclipse快捷键指南
ildd
博客等级 码龄24年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值