如何使用动作侦听器在文本字段中显示多个Jbuttons?

时间:2017-01-25 07:54:32

标签: java

我有四个按钮,分别命名为A,B,C,D,并且每个按钮都有动作监听器,结果当我按A它工作但是当我按下其他按钮时它会删除第一个,它只显示一个文本字段中的按钮,是什么我应该在文本字段中打印多个按钮。

your example updated

'package actionlistenerdemo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ActionListenerDemo {

    public static void main(String[] args) {
    JFrame win = new JFrame("Action Listener");
    JPanel P1, P2;
    P1 = new JPanel();
    JTextField tf = new JTextField();
    tf.setColumns(10);
    tf.setEditable(false);
    P1.add(tf);
    win.add(P1,BorderLayout.PAGE_START);
    P2 = new JPanel();
    P2.setLayout (new GridLayout(2,2));
    JButton b1, b2, b3, b4; 
    b1 = new JButton(" A ");
    P2.add(b1);
    b2 = new JButton(" B ");
    P2.add(b2);
    b3 = new JButton(" C ");
    P2.add(b3);
    b4 = new JButton(" D ");
    P2.add(b4);
    b1.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            tf.setText("A");
        }
    });

    b2.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            tf.setText("B");
        }
    });

    b3.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
           tf.setText("C");
        }
    });

    b4.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
           tf.setText("D");
        }
    });

    win.add(P2);
    win.setSize(200,200);
    win.setVisible(true);

}

}'    

1 个答案:

答案 0 :(得分:0)

tk.Canvas会覆盖Textfield中的当前文本。

如果你想显示tf.setText("X");你按下按钮A然后按下按钮B,那么你需要从文本字段中获取当前文本添加下一个字符并设置文本:

AB