Pessoal, um cara aki do guj perguntou pra mim como faz um teclado virtual...
Eu fiz um aki rapidinho, assim (executem ae para ver):public class TecladoVirtual extends JFrame {
private static final long serialVersionUID = 1L;
private JLabel jLabelNome;
private JLabel jLabelSenha;
private JTextField jTextNome;
private JTextField jTextSenha;
private JPanel _jPanelBotoes;
private JButton btnA;
private JButton btnB;
private JButton btnC;
private JButton btnD;
private JButton btnBackspace;
public TecladoVirtual() {
setTitle("Teclado Virtual");
setLayout(new MigLayout());
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setResizable(false);
// ////////
instanciarcomponentes();
// ////////
setdisable();
add(jLabelNome);
add(jTextNome, "span");
add(jLabelSenha);
add(jTextSenha, "span");
add(btnBackspace, "gaptop20, grow, span");
add(_jPanelBotoes, "span");
// //////
pack();
setLocationRelativeTo(null);
}
private void setdisable() {
btnA.setFocusable(false);
btnB.setFocusable(false);
btnC.setFocusable(false);
btnD.setFocusable(false);
btnBackspace.setFocusable(false);
}
private void instanciarcomponentes() {
jLabelNome = new JLabel("Digite o nome: ");
jLabelSenha = new JLabel("Digite a senha: ");
jTextNome = new JTextField(12);
jTextSenha = new JTextField(12);
btnA = new JButton("A");
btnA.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
escreveletra("A");
}
});
btnB = new JButton("B");
btnB.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
escreveletra("B");
}
});
btnC = new JButton("C");
btnC.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
escreveletra("C");
}
});
btnD = new JButton("D");
btnD.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
escreveletra("D");
}
});
btnBackspace = new JButton("Apagar");
btnBackspace.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (jTextNome.hasFocus()) {
String m = jTextNome.getText();
if (m.length() > 0) {
m = m.substring(0, (m.length()) - 1);
jTextNome.setText(m);
jTextNome.requestFocus(true);
}
}
else {
String m = jTextSenha.getText();
if (m.length() > 0) {
m = m.substring(0, (m.length()) - 1);
jTextSenha.setText(m);
jTextSenha.requestFocus(true);
}
}
}
});
_jPanelBotoes = new JPanel();
_jPanelBotoes.setBorder(new TitledBorder(null, "Botões",
TitledBorder.DEFAULT_JUSTIFICATION,
TitledBorder.DEFAULT_POSITION, null, new Color(49, 106, 196)));
_jPanelBotoes.setLayout(new MigLayout());
_jPanelBotoes.add(btnA);
_jPanelBotoes.add(btnB);
_jPanelBotoes.add(btnC);
_jPanelBotoes.add(btnD);
}
private void escreveletra(String letra) {
if (jTextNome.hasFocus()) {
String m = jTextNome.getText();
jTextNome.setText(m + letra);
jTextNome.requestFocus(true);
}
else {
String m = jTextSenha.getText();
jTextSenha.setText(m + letra);
jTextSenha.requestFocus(true);
}
}
public static void main(String[] args) {
new TecladoVirtual().setVisible(true);
}
}
Seria assim a realmente a melhor maneira de fazer?
Agradeço.

