如何更清晰地编写此Java代码段
我编写了这个Java代码段,它使用侦听器来检测是否输入了某个键 边缘有点粗糙,想知道是否有更好的书写方式(例如,我希望输出文本显示在JTextField打印中,目前“打印”是一个小矩形框…我希望它是一个块,文本显示在其中) 代码如下:如何更清晰地编写此Java代码段,java,Java,我编写了这个Java代码段,它使用侦听器来检测是否输入了某个键 边缘有点粗糙,想知道是否有更好的书写方式(例如,我希望输出文本显示在JTextField打印中,目前“打印”是一个小矩形框…我希望它是一个块,文本显示在其中) 代码如下: import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; public class Test2{ public Test2
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Test2{
public Test2() {
JFrame jframe = new JFrame();
jframe.setSize(300,300);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jpanel= new JPanel();
jpanel.add(new JLabel("Enter your name:"));
JTextField nameField = new JTextField(" ");
jpanel.add(nameField);
JTextArea print = new JTextArea("");
jpanel.add(print);
nameField.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
if (e.getKeyChar() == 65) {
print.setText("A was typed!");
}
if (e.getKeyChar() == 66) {
System.out.println("B was typed!");
}
}
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
});
jframe.add(jpanel);
jframe.setVisible(true);
}
public static void main(String[] args) {
new Test2();
}
}
希望这有意义 而不是if(例如getKeyChar()==number)
您可以使用开关
public void keyTyped(KeyEvent e) {
switch (e.getKeyChar()) {
case 65: print.setText("A was typed!"); break;
case 66: print.setText("B was typed!"); break;
}
}
而不是if(例如getKeyChar()==number)
您可以使用开关
public void keyTyped(KeyEvent e) {
switch (e.getKeyChar()) {
case 65: print.setText("A was typed!"); break;
case 66: print.setText("B was typed!"); break;
}
}
如果希望允许字母数超过A和B,可以执行以下操作: 1-在类中声明字符串:
private static String chars = "ABCDEFG12345";
2-使用此keyTyped(KeyEvent e)
方法:
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (chars.indexOf(c) != -1) // If chars contains the char
print.setText(c + " was typed!");
else print.setText("");
}
完整代码:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Test2 {
private static String chars = "ABCDEFG12345";
public Test2() {
JFrame jframe = new JFrame();
jframe.setSize(300,300);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jpanel= new JPanel();
JLabel label = new JLabel("Enter your name:");
JTextField nameField = new JTextField("");
JTextArea print = new JTextArea("");
jpanel.add(label);
jpanel.add(nameField);
jpanel.add(print);
nameField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (chars.indexOf(c) != -1) // If chars contains the char
print.setText(c + " was typed!");
else print.setText("");
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
});
jframe.add(jpanel);
jframe.setVisible(true);
}
public static void main(String[] args) {
new Test2();
}
}
如果希望允许字母数超过A和B,可以执行以下操作: 1-在类中声明字符串:
private static String chars = "ABCDEFG12345";
2-使用此keyTyped(KeyEvent e)
方法:
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (chars.indexOf(c) != -1) // If chars contains the char
print.setText(c + " was typed!");
else print.setText("");
}
完整代码:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Test2 {
private static String chars = "ABCDEFG12345";
public Test2() {
JFrame jframe = new JFrame();
jframe.setSize(300,300);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jpanel= new JPanel();
JLabel label = new JLabel("Enter your name:");
JTextField nameField = new JTextField("");
JTextArea print = new JTextArea("");
jpanel.add(label);
jpanel.add(nameField);
jpanel.add(print);
nameField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
char c = e.getKeyChar();
if (chars.indexOf(c) != -1) // If chars contains the char
print.setText(c + " was typed!");
else print.setText("");
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
});
jframe.add(jpanel);
jframe.setVisible(true);
}
public static void main(String[] args) {
new Test2();
}
}
格式设置 语句之间有很大的垂直空间,不会增加可读性 打印字符 是否存在只打印字母A和B的特定业务案例?如果没有,只打印所有键入的字符会更干净:
@覆盖
public void keyTyped(KeyEvent e){
字符串语句=e.getKeyChar()+“已键入!”;
print.setText(语句);
系统输出打印LN(报表);
}
或者,您可以提供一些支票,以便只打印信件:
@覆盖
public void keyTyped(KeyEvent e){
char-typedCharacter=e.getKeyChar();
if(字符.isAlphabetic(类型字符)){
字符串语句=e.getKeyChar()+“已键入!”;
print.setText(语句);
系统输出打印LN(报表);
}
}
覆盖
您应该为您重写的每个方法添加@Override
注释。它
命名
Test2类的名称很差。问名字或类似的事情会更好
TODO自动生成的方法存根
它并没有向读者提供任何有用的信息。应该删除它
更正版本
以下是我将如何纠正这一点:
公共类主{
公共静态void main(字符串[]args){
新名称询问器().ask();
}
}
类名称查询器{
无效询问(){
JFrame JFrame=新JFrame();
jframe.setSize(300300);
jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE);
JPanel JPanel=新的JPanel();
添加(新的JLabel(“输入您的姓名:”);
JTextField nameField=新的JTextField(“”);
jpanel.add(名称字段);
JTextArea打印=新的JTextArea(“”);
jpanel.add(打印);
nameField.addKeyListener(新的KeyListener(){
@凌驾
public void keyTyped(KeyEvent e){
char-typedCharacter=e.getKeyChar();
if(字符.isAlphabetic(类型字符)){
字符串语句=e.getKeyChar()+“已键入!”;
print.setText(语句);
系统输出打印LN(报表);
}
}
@凌驾
public void键按下(KeyEvent e){}
@凌驾
public void keyReleased(KeyEvent e){}
});
jframe.add(jpanel);
jframe.setVisible(true);
}
}
格式设置
语句之间有很大的垂直空间,不会增加可读性
打印字符
是否存在只打印字母A和B的特定业务案例?如果没有,只打印所有键入的字符会更干净:
@覆盖
public void keyTyped(KeyEvent e){
字符串语句=e.getKeyChar()+“已键入!”;
print.setText(语句);
系统输出打印LN(报表);
}
或者,您可以提供一些支票,以便只打印信件:
@覆盖
public void keyTyped(KeyEvent e){
char-typedCharacter=e.getKeyChar();
if(字符.isAlphabetic(类型字符)){
字符串语句=e.getKeyChar()+“已键入!”;
print.setText(语句);
系统输出打印LN(报表);
}
}
覆盖
您应该为您重写的每个方法添加@Override
注释。它
命名
Test2类的名称很差。问名字或类似的事情会更好
TODO自动生成的方法存根
它并没有向读者提供任何有用的信息。应该删除它
更正版本
以下是我将如何纠正这一点:
公共类主{
公共静态void main(字符串[]args){
新名称询问器().ask();
}
}
类名称查询器{
无效询问(){
JFrame JFrame=新JFrame();
jframe.setSize(300300);
jframe.setDefaultCloseOperation(jframe.EXIT_ON_CLOSE);
JPanel JPanel=新的JPanel();
添加(新的JLabel(“输入您的姓名:”);
JTextField nameField=新的JTextField(“”);
jpanel.add(名称字段);
JTextArea打印=新的JTextArea(“”);
jpanel.add(打印);
nameField.addKeyListener(新的KeyListener(){
@凌驾
public void keyTyped(KeyEvent e){
char-typedCharacter=e.getKeyChar();
if(字符.isAlphabetic(类型字符)){
字符串语句=e.getKeyChar()+“已键入!”;
print.setText(语句);
系统输出打印LN(报表);
}
}
@凌驾
public void键按下(KeyEvent e){}
@凌驾
公共空间