-
2021-06-09 10:30:48
一、布局属性
(1)布局设置 : android:imeOptions=“actionSend”
<androidx.appcompat.widget.AppCompatEditText android:id="@+id/ed_text" android:hint="请输入文字" android:background="@color/transparent" android:maxLines="1" android:textSize="16sp" android:singleLine="true" android:imeOptions="actionSend" android:textColor="#999999" android:textColorHint="#999999" android:layout_marginStart="@dimen/dp_10" android:layout_width="match_parent" android:layout_height="@dimen/dp_45"/>
(2)代码设置:
/** 输入法动作发送, 设置Ime选项(编辑信息.发送指令) */ mEditText.setImeOptions(EditorInfo.IME_ACTION_SEND);
二、setOnEditorActionListener
mEditText.setOnEditorActionListener(new AppCompatEditText.OnEditorActionListener() { @Override @RequiresApi(api = Build.VERSION_CODES.M) public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { /** 关于编辑器动作 输入法动作发送,输入法动作完成, */ if (actionId == EditorInfo.IME_ACTION_SEND || actionId == EditorInfo.IME_ACTION_DONE || (event != null) && KeyEvent.KEYCODE_ENTER == event.getKeyCode() && KeyEvent.ACTION_DOWN == event.getAction()) { /** 获取用户输入的文字内容 */ String text = Objects.requireNonNull(ed_text.getText()).toString().trim(); //具体你需要执行的操作 //...... } //返回false以上的操作会执行两次,因为onEditorAction方法接受了false会表示尚未执行 //修改 return true,则回车之响应一次 return false; } });
android edittext 点击回车会响应两次?
由于Key有Down和Up事件,所以会执行两次更多相关内容 -
java学习:给登入界面添加键盘监听,按回车键登入
2021-03-06 04:09:31折腾了很久,终于把登入界面的键盘监听加上了,内容很简单。其实想到的话也挺简单的,毕竟可以从鼠标监听事件推测过来。假设我们是如下的登入界面:我们需要对文本框进行监听,而不是对整个JFrame对象进行监听,所以...折腾了很久,终于把登入界面的键盘监听加上了,内容很简单。其实想到的话也挺简单的,毕竟可以从鼠标监听事件推测过来。
假设我们是如下的登入界面:
我们需要对文本框进行监听,而不是对整个JFrame对象进行监听,所以代码是这样的(其他部分代码可以看看我以前的博客http://blog..net/thehide/article/details/49537925):
KeyListener key_Listener = new KeyListener()
{
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
if(e.getKeyChar() == KeyEvent.VK_ENTER )
{
//可以写你的登入程序了
}
}
};
JTextField f1 = new JTextField(18);
JPasswordField f2 = new JPasswordField(18);
f1.addKeyListener(key_Listener);
f2.addKeyListener(key_Listener);
按回车就可以实现登入了。
下面还有就是那种QQ消息,按 ctrl+回车 进行发送怎么写呢?很简单,看下面的语句吧,很快就可以类推出
KeyListener key_Listener = new KeyListener()
{
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
if(e.getKeyChar() == KeyEvent.VK_ENTER && e.isControlDown() )
{
//可以写你的登入程序了
}
}
};
-
关于键盘侦听器,请教下大佬们
2021-03-09 18:55:52该楼层疑似违规已被系统折叠隐藏此楼查看此楼package JSD1806HYQ;import javax.swing.JFrame;...import java.awt.Graphics;import java.util.Arrays;import java.util.Date;import java.util.Random;import java....该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
package JSD1806HYQ;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.util.Arrays;
import java.util.Date;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.image.BufferedImage;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/** 世界 */
public class World extends JPanel implements KeyListener{
public static final int WIDTH = 800;
public static final int HEIGHT = 1000;
public static final int updistance=30;//java窗口中上边距为30个像素;
public static final int downdistance=8;//java窗口中下边距左右编剧为8个像素;
private static final long serialVersionUID = 1L;
private Boss zzlz = new Boss();
private Sky sky = new Sky();
private Hero hero = new Hero();
private FlyingObject[] enemies = {}; //敌人数组
private Bullet[] bullets = {}; //子弹数组
private DrBullet[] drbullets = {};
Date startTime;//界面开始的时间
Date startTime1;//游戏开始的时间
Date endTime;//飞机死亡的时间
Date nowTime;//现在的时间
Date collisionTime=new Date();
Date collisionTimeNow;
long timefirst=24625;
long now_startTime;//开始到现在的时间
int enterNum=0;
boolean bigbullet=true;
boolean boss=false;//判断是否是boss关
boolean flag = false;//表示游戏是否开始
public static BufferedImage start;
public static BufferedImage pause;
public static BufferedImage gameover;
static{
start = FlyingObject.loadImage("start.png");
pause = FlyingObject.loadImage("pause.png");
gameover = FlyingObject.loadImage("gameover.png");
}
public FlyingObject nextOne(){
Random rand = new Random();
int type = rand.nextInt(20);
if(type < 4){
return new Bee();
}else if(type < 12){
return new Airplane();
}else {
return new BigAirplane();
}
}
int flyEnterIndex = 0;
public void enterAction(){
flyEnterIndex++;
if(flyEnterIndex%40==0){
FlyingObject obj = nextOne();
enemies = Arrays.copyOf(enemies,enemies.length+1);
enemies[enemies.length-1] = obj;
}
}
public void stepAction(){
zzlz.step();
sky.step();
for(int i=0;i
enemies[i].step();
}
for(int i=0;i
bullets[i].step();
}
}
int shootIndex = 0;
public void shootAction(){
shootIndex++;
if(shootIndex%30==0){
Bullet[] bs = hero.shoot();
bullets = Arrays.copyOf(bullets,bullets.length+bs.length);
System.arraycopy(bs,0,bullets,bullets.length-bs.length,bs.length);
}
}
private int score = 0;
public void bangAction(){
for(int i=0;i
Bullet b = bullets[i];
for(int j=0;j
FlyingObject f = enemies[j];
if(b.isLife() && f.isLife() && b.hit(f)){
b.goDead();
f.goDead();
if(f instanceof Enemy){
Enemy e = (Enemy)f;
score += e.getScore();
}
if(f instanceof Award){
Award a = (Award)f;
int type = a.getAwardType();
switch(type){
case Award.DOUBLE_FIRE:
hero.addDoubleFire();
break;
case Award.LIFE:
hero.addLife();
break;
}
}
}
}
}
}
public void outOfBoundsAction(){
int index = 0;
FlyingObject[] enemyLives = new FlyingObject[enemies.length];
for(int i=0;i
FlyingObject e = enemies[i];
if(!e.outOfBounds() && !e.isRemove()){
enemyLives[index++] = e;
}
}
enemies = Arrays.copyOf(enemyLives,index);
index = 0;
Bullet[] bulletLives = new Bullet[bullets.length];
for(int i=0;i
Bullet b = bullets[i];
if(!b.outOfBounds() && !b.isRemove()){
bulletLives[index++] = b;
}
}
bullets = Arrays.copyOf(bulletLives,index);
}
public void hitAction(){
for(int i=0;i
FlyingObject f = enemies[i];
if(f.isLife() && hero.hit(f)){
f.goDead();
hero.subtractLife();
hero.clearDoubleFire();
break;
}
}
}
public void checkGameOverAction(){
if(hero.getLife()<=0){
flag = false;
}
}
int num = 1;
public void action(){ //启动执行
Timer timer = new Timer();
int intervel = 10;
timer.schedule(new TimerTask(){
public void run(){
if(flag==true){
enterAction();
stepAction();
shootAction();
outOfBoundsAction();
bangAction();
hitAction();
checkGameOverAction();
}
repaint();
}
},intervel,intervel);
}
public void paint(Graphics g){
if(now_startTime>1000){
System.out.println(now_startTime);
boss=true;
zzlz.paintObject(g);
}
sky.paintObject(g);
hero.paintObject(g);
for(int i=0;i
enemies[i].paintObject(g);
}
for(int i=0;i
bullets[i].paintObject(g);
}
for(int i=0;i
drbullets[i].paintObject(g);
}
g.drawString("SCORE: "+score,10,25);
g.drawString("LIFE: "+hero.getLife(),10,45);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
World world = new World();
frame.add(world);
frame.addKeyListener(world);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WIDTH, HEIGHT);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
world.action();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
hero.addDirection(e);
if(e.getKeyCode()==KeyEvent.VK_ENTER){
flag = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
hero.minusDirection(e);
if(e.getKeyCode()==KeyEvent.VK_ENTER){
enterNum++;
if(enterNum==1){
startTime=new Date();//游戏开始的时间
System.out.println(startTime);
}
}
}
}
-
EditText的多行输入和回车键的监听
2021-03-20 08:26:15今天遇到个需求,需要 EditText控件监听软键盘的回车按键,将用户写下的多行文本提交到服务器。一开始以为是个简单的要求,不过由于对EditText内部机制的不了解,导致比预期花多了不少时间去完成,特此记录一下。...今天遇到个需求,需要 EditText控件监听软键盘的回车按键,将用户写下的多行文本提交到服务器。
一开始以为是个简单的要求,不过由于对EditText内部机制的不了解,导致比预期花多了不少时间去完成,特此记录一下。
如果是对EditText内部机制不熟悉的人的话,一开始应该会写出类似我们下面的代码:
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="120dp"
android:background="@drawable/input_box"
android:gravity="top|start"
android:imeOptions="actionDone"
android:padding="8dp" />
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE) {
Toast.makeText(MainActivity.this, "Commit!", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
}
然而当我们运行上面的代码,输入一大串东西后就会发现:
image.png
在xml设置的android:imeOptions="actionDone"怎么没有起到作用?怎么软键盘的回车按键还是个换行符号的?
通过查询各种资料,要让EditText的imeOptions配置生效就必须设置下面两个属性中的一个:
android:singleLine="true"
android:inputType="text"
只要你设置了上面的任意一个(inputType属性不一定是设置text类型的,不过也不是全部的inputType类型都可以,具体的请自己去尝试),都可以让imeOptions配置生效和完成软键盘的回车键监听。不过估计你也察觉到了,上面两个属性,只要有一个在xml里面设置了,那么EditText就失去换行的作用了!!!
解决的方法
由于需求是多行输入,无论是android:singleLine="true"还是android:inputType="text"都限制了只能单行,那么有什么方法可以突破text类型的单行限制吗?当然是有的,EditText继承TextView,查看下TextView的setSingleLine方法可以看到一个applySingleLine方法,里面可以看到一些有趣的代码:
image.png
setMaxLines方法大家应该偶读很熟悉了,setHorizontallyScrolling方法还是第一次见到,点进去看下注解:
image.png
好的,这样子大概就知道了这个方法是设置文本能否超过View的宽度,如果是false,那么文本宽度最多只能是View的宽度。
看到这里,笔者第一时间在xml里面做了下面的设置:
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="120dp"
android:background="@drawable/input_box"
android:gravity="top|start"
android:imeOptions="actionDone"
android:singleLine="true"
android:maxLines="50"
android:scrollHorizontally="false"
android:padding="8dp" />
结果是不起作用的,猜测应该是TextView在初始化属性那边将android:singleLine属性放在了后面处理,那么在Java代码里面做处理会怎么样:
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="120dp"
android:background="@drawable/input_box"
android:gravity="top|start"
android:imeOptions="actionDone"
android:singleLine="true"
android:padding="8dp" />
EditText editText = (EditText) findViewById(R.id.editText);
editText.setHorizontallyScrolling(false);
editText.setMaxLines(Integer.MAX_VALUE);
运行看下代码:
show.gif
ok,问题解决了。
-
hook全局监听键盘事件
2021-01-07 17:20:52hook全局监听键盘事件 -
android实现回车键的监听
2018-08-14 14:02:361.布局文件中的edittext:设置属性 android:singleLine="true" android:imeOptions="...2.java文件中 editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override ... -
Java 实现输入键盘上任意键显示出相对应的ASCII
2021-03-14 15:46:27// 输出键的名称 g.drawString("字符:" + KeyChar, 100, 140); // 输出字符 } public void keyPressed(KeyEvent event) // 得到虚拟键码 { KeyVirtualCode = event.getKeyCode(); } public void keyReleased... -
JavaScript 监听textarea中按键事件
2020-12-12 23:11:27有个textarea, Java代码 代码如下: <textarea id=”text”></textarea> 经常会定义onKeyPress=”keypress();”,并定义以下方法。 代码如下: var keypress = function(e){ var e = e || window.event; ... -
JavaScript监听键盘事件代码实现
2021-03-16 10:41:37在写网页的时候,常常需要监听键盘事件,让我们来看看如何实现吧。监听方式键盘事件往往是全局监听,设监听的函数为keyboard()。keyup事件类型。该类型触发条件为按键按下去并松开。//长按并松开只触发一次document.... -
android 键盘修改回车键监听及无效处理,imeOptions无效处理
2017-08-18 09:26:19注意如果android:imeOptions=””属性设置后,发现回车键没有改变,则必须设置Android:singleLine=”true” 一、android 软件盘事件响应 在android中,有时需要对EditText实现软件盘监听的场景。当android按下... -
JS移动端如何监听软键盘回车事件
2022-02-17 20:18:16移动端常常项目中会有搜索之类的功能,通常... 移动端软键盘的回车会触发form的submit事件,因此咱们只须要监听form的submit事件就能够实现按回车按钮进行搜索的功能java var oForm = document.getElementsByTagName(“f -
selenium测试(Java)-- 键盘事件(七)
2021-03-13 22:35:2934 35 //通过回车来代替提交动作 36 driver.findElement(By.xpath("//*[@id='kw']")).sendKeys(Keys.ENTER); 37 38 waitTime(5000); 39 driver.quit(); 40 } 41 42 static public void waitTime(int time) { 43 44 ... -
java模拟键盘操作,java自动化操作
2021-01-28 14:10:18博客来源: 一个字,懒!这正是我前进的源泉…现在连操作电脑都想自动化了…… 已经打好的包————>... 已经打好的包————>...已经打好的包————>...话不多说上源码,注释很全,...import java.awt.even... -
Java中的鼠标事件和键盘事件
2021-03-16 00:36:27//利用 java.awt.Robot 类来自动完成一些键盘或鼠标的动作,下面是一个小例子//程序流程:模拟鼠标左键点击 开始-->运行-->CMD-->DIR-->CLS-->EXIT//模拟右键点击 移动到右下角-->右键点击-->... -
Android修改软键盘回车键并监听
2015-07-24 16:55:04首先在XML中修改想把回车键改变为什么键 android:imeOptions="actionSend" android:inputType="text"其中actionSend就是改为发送 然后在代码中进行监听 @Override public boolean dispatchKeyEvent(KeyEvent ... -
android 键盘按键监听
2016-03-02 10:11:41onKeyDown方法:该方法是接口KeyEvent.Callback中的抽象方法,所有的View全部实现了该接口并重写了该...参数keyCode,该参数为被按下的键值即键盘码,手机键盘中每个按钮都会有其单独的键盘码,在应用程序都是通过键 -
在Flutter中按下回车键时,始终保持软键盘打开
2021-03-06 05:49:14在TextField上设置 autofocus = true 以在加载页面时获得焦点,并使用FocusNode和FocusScope始终将TextField设置为焦点 .... } } Note: 这种方法会给键盘带来崎岖的效果 . 我不确定这对你有多重要 . -
键盘监听
2020-06-24 15:35:17GetKeyState(), GetAsyncKeystate(), ...获得全部的256个键(键盘按键、鼠标按键等等)的状态,lpKeyState是指向一个256bit的数组。存放全部键的状态。 2、SHORT GetAsyncKeyState( int vKey );推断Virtu -
Android EditText软键盘回车键变成搜索键
2022-02-25 09:23:57xml中设置EditText的属性,...设置监听,实现TextView.OnEditorActionListener接口 mSearch.setOnEditorActionListener(this); 实现onEditorAction方法 @Overridepublic boolean onEditorAction(TextView v, int a -
JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等)
2020-11-24 14:47:22前端(十五)—— JavaScript事件:绑定事件方式、事件的冒泡和默认事件、鼠标事件、键盘事件、表单 事件、文档事件、图片事件、页面事件JS事件:绑定事件方式.事件的冒泡和默认事件.鼠标事件.键盘事件.表单 事件.... -
使用jna实现键盘输入监听,不用回车
2020-08-31 22:09:41需要用到的 jna及jna-platform jar包 ...import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import com.sun.jna.Pointer; import -
java 怎么在控制台就可以监听键盘的输入(不用敲回车),比如连续输入三个a,系统提示停止输入
2017-11-15 14:54:08java 怎么在控制台就可以监听键盘的输入(不用敲回车),比如连续输入三个a,系统提示停止输入 http://www.tuxi.com.cn/viewb-30830-308301630.html -
Java编程:获取键盘输入的三种方法
2016-07-28 17:52:48方法一:使用System.out.read()获取键盘输入,此方法只能一个字符一个字符的获取,获取到的变量类型为int,需要通过类型转换获取到自己期望的类型。该方法也会接收回车符(13)、换行符(10)。package ... -
JAVA-Jtextarea 聊天软件 屏蔽回车键换行
2019-09-22 16:07:59结果实测发现如果使用按键监听函数addKeyListener触发按键事件的话不仅会把文本发出去,还会在发送文本框内加一个回车键换行,也就是按下回车后不仅执行了addKeyListener事件还执行了系统默认的【输入回车符】的事件... -
JavaFX键盘事件(及键盘事件无效的原因)
2021-08-20 16:22:44一、键盘事件 KeyPressed //按键按压 KeyReleased //按键释放 KeyTyped //按键类型 二、用法 a.lambda表达式 node.addEventHandler(KeyEvent.XX, event -> { //逻辑代码 }); b.多个地方调用时可抽象... -
Toast.makeText(getContext(),"点击了回车键",Toast.LENGTH_SHORT).show(); // 隐藏软键盘 InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm...
-
swing 设置回车响应按钮的方法
2021-02-28 11:01:39Java的界面开发与.NET和MFC相比没那么直观,为了设置按钮对回车按键...其中 jbtn_change 就是在画面按下回车键是需要执行的按钮对象。二、这个方法比较麻烦,但是比较灵活。其中原理就是在每个输入框上添加键盘输入...