java - 使 JButton 在 JPassword 字段上显示文本

标签 java swing text jbutton jpasswordfield

我希望 JButton 在 JPasswordField 上显示它们各自的数字(我知道我只会看到密码点)。我什至不确定为什么现在不显示它,我错过了什么?这里我展示了程序的运行情况:(简短的gif,无需下载) http://gyazo.com/b3fec4f8e433b05274cb0af78777ece6

package tarea10;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;

public class Tarea10 {
private JFrame f;
private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12;
private JPasswordField passField;
private JPanel p;

public Tarea10() {
    p = new JPanel();
    passField = new JPasswordField("");
    f = new JFrame("Programa");
    b1 = new JButton("7");
    b2 = new JButton("8");
    b3 = new JButton("9");
    b4 = new JButton("4");
    b5 = new JButton("5");
    b6 = new JButton("6");
    b7 = new JButton("1");
    b8 = new JButton("2");
    b9 = new JButton("3");
    b10 = new JButton("Cancelar");
    b11 = new JButton("0");
    b12 = new JButton("Aceptar");      
}

    ActionListener al = new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
    JButton button = (JButton) e.getSource();
    String prev = passField.getText();
    passField.setText(prev + button.getText());
    b1.addActionListener(al);
    b2.addActionListener(al);
    b3.addActionListener(al);
    b4.addActionListener(al);
    b5.addActionListener(al);
    b6.addActionListener(al);
    b7.addActionListener(al);
    b8.addActionListener(al);
    b9.addActionListener(al);
    b11.addActionListener(al);  
}
};

public void mostrar() {
    p.setLayout (new GridLayout(4,3));
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    p.add(b1);
    p.add(b2);
    p.add(b3);
    p.add(b4);
    p.add(b5);
    p.add(b6);
    p.add(b7);
    p.add(b8);
    p.add(b9);
    p.add(b10);
    p.add(b11);
    p.add(b12);
    p.add(passField);
    f.add(passField, BorderLayout.WEST);
    f.add(p, BorderLayout.EAST);
    f.setSize(450,400);
    f.setVisible(true);
}

public static void main(String args[]) {

  Tarea10 ventana = new Tarea10();
  ventana.mostrar();

}}

最佳答案

您应该使用这里是更正后的代码

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

public class Tarea10 {
    private JFrame f;
    private JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12;
    private JPasswordField passField;
    private JPanel p;

    public Tarea10() {
        p = new JPanel();
        passField = new JPasswordField("");
        f = new JFrame("Programa");
        b1 = new JButton("7");
        b2 = new JButton("8");
        b3 = new JButton("9");
        b4 = new JButton("4");
        b5 = new JButton("5");
        b6 = new JButton("6");
        b7 = new JButton("1");
        b8 = new JButton("2");
        b9 = new JButton("3");
        b10 = new JButton("Cancelar");
        b11 = new JButton("0");
        b12 = new JButton("Aceptar");   
        ActionListener al = new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e){
            JButton button = (JButton) e.getSource();
            String prev = passField.getText();
            passField.setText(prev + button.getText());

        } 
      };
       b1.addActionListener(al);
       b2.addActionListener(al);
       b3.addActionListener(al);
       b4.addActionListener(al);
       b5.addActionListener(al);
       b6.addActionListener(al);
       b7.addActionListener(al);
       b8.addActionListener(al);
       b9.addActionListener(al);
       b11.addActionListener(al);  

    }


    public void mostrar() {
        p.setLayout (new GridLayout(4,3));
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    p.add(b1);
    p.add(b2);
    p.add(b3);
    p.add(b4);
    p.add(b5);
    p.add(b6);
    p.add(b7);
    p.add(b8);
    p.add(b9);
    p.add(b10);
    p.add(b11);
    p.add(b12);
    p.add(passField);
    f.add(passField, BorderLayout.WEST);
    f.add(p, BorderLayout.EAST);
    f.setSize(450,400);
    f.setVisible(true);
}

public static void main(String args[]) {

  Tarea10 ventana = new Tarea10();
  ventana.mostrar();

  }
}

关于java - 使 JButton 在 JPassword 字段上显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27031336/

相关文章:

java - 遗传算法 - 部分映射交叉 - Java

java - 获取 Java Swing 'No Drag' 游标

java - 无法使用 HTML 文本在 JLabel 中设置助记词

r - 根据条件为 geom_text 中的文本添加颜色

android - 在 Android 中添加输入约束来编辑文本?

java - 计算字符串中字符出现次数的简单方法

java - 自更新到 ADT 17 以来,使用 libgdx 的 Android 应用程序崩溃

java - 边框和网格布局

java - 更改 gui 中的面板

memory - 在内存中表示格式化文本的最佳方式? C++