Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
232 views
in Technique[技术] by (71.8m points)

java - Should I use separate ActionListener for each similar action or generic one?

I'm creating a keyboard using buttons with java, when a user clicks on a button labelled from A to Z it will set a JTextField text to A or whatever button they pressed.

I have a seperate class for each button so for A its public class listenser1 implements ActionListener, B its public class listenser2 implements ActionListener is this a good way of doing it?

Also I tried to do do it under one class and used if and if else statements buy using

        if(a.getText().equals("A"))
        {
           input1.setText(input.getText() + "A");       
        }
        .
        .
        .

And this doesn't work, it prints out ABCDEFGHIJKLMNOPQRSTUVWXYZ instead of just the one letter.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

No, that is not the most efficient way. That takes way too long to write. Instead, try this:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;

public class Example extends JFrame implements ActionListener {
    private final String[] letters = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
    private JButton[] buttons = new JButton[26];
    private JTextArea text = new JTextArea();

    public Example() {
        super("Example");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        for (int i = 0; i < letters.length; i++) {
            buttons[i] = new JButton(letters[i]);
            buttons[i].addActionListener(this);
            add(buttons[i]);
        }
        add(text);
        pack();
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        text.append(event.getActionCommand());
    }

    public static void main(String[] args) {
        Example ex = new Example();
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...