Java 如何使关键事件与单个文本字段一起工作

Java 如何使关键事件与单个文本字段一起工作,java,swing,keylistener,keyevent,Java,Swing,Keylistener,Keyevent,好的,我有一个任务,我们要创建一个泛型pair类,然后测试它是否有效。pair类有一些必须遵循的要求,但是我们可以自由地对测试类执行我们想要的操作。我承认有点过火了,但这仅仅是因为玩弄各种想法可以帮助我学习课堂上没有涉及的其他东西。现在,我不能展示泛型类的内容,因为这部分是作业的重要部分,但是对于我的测试类,我将展示所有的内容。我正在尝试这样做,以便我的第五个文本字段(tf5)可以接收用户信息,然后在按下enter键后,该信息(设置为ArrayList)被发送到我的JSrollPanel(myS

好的,我有一个任务,我们要创建一个泛型pair类,然后测试它是否有效。pair类有一些必须遵循的要求,但是我们可以自由地对测试类执行我们想要的操作。我承认有点过火了,但这仅仅是因为玩弄各种想法可以帮助我学习课堂上没有涉及的其他东西。现在,我不能展示泛型类的内容,因为这部分是作业的重要部分,但是对于我的测试类,我将展示所有的内容。我正在尝试这样做,以便我的第五个文本字段(
tf5
)可以接收用户信息,然后在按下enter键后,该信息(设置为ArrayList)被发送到我的JSrollPanel(
myScrollPane
)。现在,按照我设置keylistener的方式,它会在我键入时将我键入的任何内容添加到文本字段、JScrollPanel中。因此,如果我输入1,2,3,4,我会得到4个数组列表打印到面板上(每个列表有一个数字)。我希望能够在文本字段中键入任何我想要的内容,并且只有在我按下enter键后才能将其传递到JScrollPanel中,但就我而言,我就是不知道该怎么做。有人能帮我解决这个问题吗?这是我的密码:

package lab10;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Integer.*;
import java.util.ArrayList;


public class Lab10 extends JFrame {

private Container content;
private JTextField tf1, tf2, tf3, tf4, tf5, tf6;
private JLabel lbl1, lbl2, lbl3, lbl4, lbl5, lbl6, lbl7, lbl8, lbl9, lbl10;
private Font myFont;
private JButton myBtn, myBtn2, tstb;
private JTextArea myTextArea;
private JScrollPane myScrollPane;
private KeyEvent x;
Integer I1, I2;
String S1, S2;
Double D1, D2;
ArrayList A1, A2;
Pair<Integer, Integer> myPairInt = new Pair<>(I1, I2);
Pair<String, Double> myPairStrDbl = new Pair<>(S1, D2);
Pair<ArrayList, String> myPairAryStr = new Pair<>(A1, S2);

public Lab10() {
    this(640, 540, "Testing a Generic Pair");
}

public Lab10(int width, int height, String title) {
    this.setVisible(true);
    this.setTitle(title);
    this.setSize(width, height);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    guiComponent();

}

private void guiComponent() {
    SpringLayout layout = new SpringLayout();
    content = this.getContentPane();
    content.setLayout(layout);
    myFont = new Font("Magneto", Font.BOLD, 12);
    myBtn = new JButton("Do It!");
    myBtn2 = new JButton();
    myBtn2.setLayout(new BorderLayout());
    JLabel label1 = new JLabel("Click here to add elements to Array List");
    JLabel label2 = new JLabel("(Before you click the bottom button!)");
    myBtn2.add(BorderLayout.NORTH, label1);
    myBtn2.add(BorderLayout.SOUTH, label2);
    myBtn.addActionListener(new ButtonClick());
    myBtn2.addActionListener(new ArrayListClickAdd());
    lbl1 = new JLabel("Enter a string of numbers for me to count");
    lbl2 = new JLabel("Now enter another string of numbers for me to count");
    lbl3 = new JLabel("This is where I show you what you typed ");
    lbl4 = new JLabel("Now type a String and I'll count the Ascii sum ");
    lbl5 = new JLabel("Now type in a double, i.e. 2.4 or 2.3 or 5.6 ");
    lbl6 = new JLabel("This is where I show you what you typed ");
    lbl7 = new JLabel("Now Enter an Array List, (just a standard string of numbers) ");
    lbl8 = new JLabel("Now Enter a String and I will convert it all to uppercase");
    lbl9 = new JLabel("This is where I will show you what you've typed ");
    lbl10 = new JLabel();
    tf1 = new JTextField(8);
    tf2 = new JTextField(8);
    tf3 = new JTextField(8); 
    tf4 = new JTextField(8);
    tf5 = new JTextField(8); 
    tf6 = new JTextField(8);

        tf5.addKeyListener(new MyKeyEvent());

    myTextArea = new JTextArea();
    myTextArea.setColumns(12);
    myTextArea.setRows(8);
    myTextArea.setFont(myFont);


    content.add(lbl1);
    layout.putConstraint(SpringLayout.WEST, lbl1, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl1, 10, SpringLayout.NORTH, content);

    content.add(tf1);
    layout.putConstraint(SpringLayout.WEST, tf1, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, tf1, 10, SpringLayout.SOUTH, lbl1);

    content.add(lbl2);
    layout.putConstraint(SpringLayout.WEST, lbl2, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl2, 10, SpringLayout.SOUTH, tf1);

    content.add(tf2);
    layout.putConstraint(SpringLayout.WEST, tf2, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, tf2, 10, SpringLayout.SOUTH, lbl2);

    content.add(lbl3);
    layout.putConstraint(SpringLayout.WEST, lbl3, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl3, 10, SpringLayout.SOUTH, tf2);

    content.add(lbl4);
    layout.putConstraint(SpringLayout.WEST, lbl4, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl4, 10, SpringLayout.SOUTH, lbl3);

    content.add(tf3);
    layout.putConstraint(SpringLayout.WEST, tf3, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, tf3, 10, SpringLayout.SOUTH, lbl4);

    content.add(lbl5);
    layout.putConstraint(SpringLayout.WEST, lbl5, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl5, 10, SpringLayout.SOUTH, tf3);

    content.add(tf4);
    layout.putConstraint(SpringLayout.WEST, tf4, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, tf4, 10, SpringLayout.SOUTH, lbl5);

    content.add(lbl6);
    layout.putConstraint(SpringLayout.WEST, lbl6, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl6, 10, SpringLayout.SOUTH, tf4);

    content.add(lbl7);
    layout.putConstraint(SpringLayout.WEST, lbl7, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl7, 10, SpringLayout.SOUTH, lbl6);

    content.add(tf5);
    layout.putConstraint(SpringLayout.WEST, tf5, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, tf5, 10, SpringLayout.SOUTH, lbl7);

    content.add(lbl8);
    layout.putConstraint(SpringLayout.WEST, lbl8, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl8, 10, SpringLayout.SOUTH, tf5);

    content.add(tf6);
    layout.putConstraint(SpringLayout.WEST, tf6, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, tf6, 10, SpringLayout.SOUTH, lbl8);

    content.add(lbl9);
    layout.putConstraint(SpringLayout.WEST, lbl9, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl9, 10, SpringLayout.SOUTH, tf6);

    content.add(lbl10);
    layout.putConstraint(SpringLayout.WEST, lbl10, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, lbl10, 2, SpringLayout.SOUTH, lbl9);

    myScrollPane = new JScrollPane(myTextArea);
    content.add(myScrollPane);
    layout.putConstraint(SpringLayout.WEST, myScrollPane, 250, SpringLayout.EAST, tf4);
    layout.putConstraint(SpringLayout.NORTH, myScrollPane, 1, SpringLayout.SOUTH, myBtn2);

    content.add(myBtn2);
    layout.putConstraint(SpringLayout.WEST, myBtn2, 3, SpringLayout.EAST, lbl7);
    layout.putConstraint(SpringLayout.NORTH, myBtn2, 8, SpringLayout.SOUTH, lbl6);

    content.add(myBtn);
    layout.putConstraint(SpringLayout.WEST, myBtn, 10, SpringLayout.WEST, content);
    layout.putConstraint(SpringLayout.NORTH, myBtn, 10, SpringLayout.SOUTH, lbl10);
}

private String upper(String y) {
    return y.toUpperCase();
}

private String getAsciiSum(String z) {
    int addSum = 0;
    for (int i = 0; i < z.length(); i++) {
        char x = z.charAt(i);
        int j = (int) x;
        addSum += x;
    }
    z = Integer.toString(addSum);
    return z;
}

int sumNums(int x) {
    String myNum = Integer.toString(x);
    int addSum = 0;
    for (int i = 0; i < myNum.length(); i++) {
        addSum += Character.digit(myNum.charAt(i), 10);
    }
    return addSum;
}

int[] getArray(int num) {
    String counter = "" + num;
    int digits = counter.length();
    int[] nums = new int[digits];
    for (int i = digits - 1; i >= 0; i--) {
        nums[i] = num % 10;
        num /= 10;
    }
    return nums;
}

private class MyKeyEvent implements KeyListener {

    public MyKeyEvent() {
    }

    @Override
    public void keyTyped(KeyEvent ke) {

        ke.setKeyCode(KeyEvent.VK_RIGHT);
       if (ke.getKeyCode() == KeyEvent.VK_RIGHT) {

            String arrNum = tf5.getText();
            ArrayList arList = new ArrayList();
            arList.add(arrNum);
            myPairAryStr.setFirst(arList);
            myTextArea.append(myPairAryStr.getFirst() + "\n");
            tf5.setText("");
       }
    }

    @Override
    public void keyPressed(KeyEvent ke) {
    }

    @Override
    public void keyReleased(KeyEvent ke) {
    }
}

private class ArrayListClickAdd implements ActionListener {

    public ArrayListClickAdd() {
    }

    @Override
    public void actionPerformed(ActionEvent ae) {

        String arrNum = tf5.getText();
        ArrayList arList = new ArrayList();
        arList.add(arrNum);
        myPairAryStr.setFirst(arList);
        myTextArea.append(myPairAryStr.getFirst() + "\n");
        tf5.setText("");
    }
}

private class ButtonClick implements ActionListener {

    public ButtonClick() {
    }

    @Override
    public void actionPerformed(ActionEvent ae) {


        int num = Integer.parseInt(tf1.getText());
        int num2 = Integer.parseInt(tf2.getText());
        String num3 = tf3.getText();
        double num4 = Double.parseDouble(tf4.getText());
        String arrLst = tf5.getText();
        String num6 = tf6.getText();

        int count1 = sumNums(num);
        int count2 = sumNums(num2);
        String strSum = getAsciiSum(num3);
        String goBig = upper(num6);


        Integer int1 = new Integer(count1);
        Integer int2 = new Integer(count2);
        String str1 = strSum;
        Double dbl2 = new Double(num4);
        ArrayList arList = new ArrayList();
        arList.add(arrLst);
        String str2 = goBig;

        myPairInt.setFirst(int1);
        myPairInt.setSecond(int2);
        myPairStrDbl.setFirst(str1);
        myPairStrDbl.setSecond(dbl2);
        myPairAryStr.setFirst(arList);
        myPairAryStr.setSecond(str2);

        lbl3.setText("Your numbers fromthe first field add up to : " + myPairInt.getFirst() + " and your numbers from the second field add up to : " + myPairInt.getSecond());
        lbl6.setText("The Ascii sum of the first Field is : " + myPairStrDbl.getFirst() + " and you typed : " + myPairStrDbl.getSecond() + " In the Second Field");
        lbl9.setText("You typed : " + myPairAryStr.getFirst() + " In the first Field,");
        lbl10.setText("and : " + myPairAryStr.getSecond() + " In the Second");
        myTextArea.append(myPairAryStr.getFirst() + "\n");

    }
}

public static void main(String[] args) {
    Lab10 test = new Lab10();
}
lab10包装;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.lang.Integer.*;
导入java.util.ArrayList;
公共类Lab10扩展了JFrame{
私人容器内容;
私有JTextField tf1、tf2、tf3、tf4、tf5、tf6;
私人JLabel lbl1、lbl2、lbl3、lbl4、lbl5、lbl6、lbl7、lbl8、lbl9、lbl10;
私有字体myFont;
私人JButton myBtn、myBtn2、tstb;
私人JTextArea myTextArea;
私有JScrollPane myScrollPane;
私钥事件x;
整数I1,I2;
字符串S1、S2;
双D1,D2;
阵列列表A1、A2;
Pair myPairInt=新对(I1,I2);
Pair myPairStrDbl=新对(S1,D2);
Pair myPairAryStr=新对(A1,S2);
公共实验室10(){
这(640540,“测试通用对”);
}
公共Lab10(整数宽度、整数高度、字符串标题){
此.setVisible(true);
这个.setTitle(title);
此.setSize(宽度、高度);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiComponent();
}
私有组件(){
SpringLayout布局=新的SpringLayout();
content=this.getContentPane();
content.setLayout(布局);
myFont=新字体(“磁电机”,Font.BOLD,12);
myBtn=newjbutton(“做吧!”);
myBtn2=新的JButton();
myBtn2.setLayout(新的BorderLayout());
JLabel label1=新的JLabel(“单击此处将元素添加到数组列表”);
JLabel label2=新的JLabel(“(单击底部按钮之前!)”;
myBtn2.add(BorderLayout.NORTH,label1);
myBtn2.add(BorderLayout.SOUTH,label2);
myBtn.addActionListener(新按钮单击());
myBtn2.addActionListener(新建ArrayListClickAdd());
lbl1=新的JLabel(“输入一个数字字符串供我计数”);
lbl2=新的JLabel(“现在输入另一个数字字符串供我计数”);
lbl3=新的JLabel(“我在这里向您展示您键入的内容”);
lbl4=newjlabel(“现在键入一个字符串,我来计算Ascii和”);
lbl5=新的JLabel(“现在输入双精度,即2.4或2.3或5.6”);
lbl6=新的JLabel(“我在这里向您展示您键入的内容”);
lbl7=newjlabel(“现在输入一个数组列表,(只是一个标准的数字字符串)”;
lbl8=newjlabel(“现在输入一个字符串,我将把它全部转换为大写”);
lbl9=新的JLabel(“在这里我将向您展示您键入的内容”);
lbl10=新的JLabel();
tf1=新的JTextField(8);
tf2=新的JTextField(8);
tf3=新的JTextField(8);
tf4=新的JTextField(8);
tf5=新的JTextField(8);
tf6=新的JTextField(8);
addKeyListener(新的MyKeyEvent());
myTextArea=新的JTextArea();
myTextArea.setColumns(12);
myTextArea.setRows(8);
设置字体(myFont);
内容。添加(lbl1);
布局.putConstraint(SpringLayout.WEST,lbl1,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH,lbl1,10,SpringLayout.NORTH,content);
添加内容(tf1);
布局.putConstraint(SpringLayout.WEST,tf1,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH、tf1、10、SpringLayout.SOUTH、lbl1);
添加内容(lbl2);
布局.putConstraint(SpringLayout.WEST,lbl2,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH、lbl2、10、SpringLayout.SOUTH、tf1);
content.add(tf2);
putConstraint(SpringLayout.WEST,tf2,10,SpringLayout.WEST,content);
layout.putConstraint(SpringLayout.NORTH、tf2、10、SpringLayout.SOUTH、lbl2);
内容。添加(lbl3);
布局.putConstraint(SpringLayout.WEST,lbl3,10,SpringLayout.WEST,content);
layout.putConstraint(SpringLayout.NORTH,lbl3,10,SpringLayout.SOUTH,tf2);
内容。添加(lbl4);
布局.putConstraint(SpringLayout.WEST,lbl4,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH,lbl4,10,SpringLayout.SOUTH,lbl3);
添加内容(tf3);
布局.putConstraint(SpringLayout.WEST,tf3,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH、tf3、10、SpringLayout.SOUTH、lbl4);
内容。添加(lbl5);
布局.putConstraint(SpringLayout.WEST、lbl5、10、SpringLayout.WEST、content);
布局.putConstraint(SpringLayout.NORTH、lbl5、10、SpringLayout.SOUTH、tf3);
添加内容(tf4);
布局.putConstraint(SpringLayout.WEST,tf4,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH、tf4、10、SpringLayout.SOUTH、lbl5);
内容。添加(lbl6);
布局.putConstraint(SpringLayout.WEST,lbl6,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH、lbl6、10、SpringLayout.SOUTH、tf4);
内容。添加(lbl7);
布局.putConstraint(SpringLayout.WEST,lbl7,10,SpringLayout.WEST,content);
布局.putConstraint(SpringLayout.NORTH、lbl7、10、SpringLayout.SOUTH、lbl6);
添加内容(tf5);
L