Boas
Sabem se por acaso há uma forma para controlar onde se escreve (Através de um Keyboard) num jTextField,
posição de escrita numa String de Length 4 eu quero escrever na posição 4
Assim parecido com um MB
Preciso de ajuda…
obrigado
Boas
Sabem se por acaso há uma forma para controlar onde se escreve (Através de um Keyboard) num jTextField,
posição de escrita numa String de Length 4 eu quero escrever na posição 4
Assim parecido com um MB
Preciso de ajuda…
obrigado
Deixa eu ver se entendi?
você quer escrever em determinada posição de uma String? tem como dar um exemplo?
Bom o exemplo é o multi banco, quando tu chegas à frente de um multi banco ele apresenta-te um ecrân
0.00 -> por exemplo
e tu carregas no 1 e passa a
0.01 e tu carregas no 2 e passa a
0.12 e tu carregas no 4 e passa a
1.24 aí está era isto que eu gostava de obter no meu teclado
até agora (graças a um colega) eu consigo somente escrever numeros e pontos só não consigo fazer isto.
Obrigado
Já resolvi
Posta a solução aí, se for possível, e coloca [resolvido] no título do topico
Eu fiz 3 JTextField e ao lado coloquei 3 JToggleButton
para visa mb cheque
Juntei a cada um dos 3 JTextField
jTextField.setText("0.00");
jTextField.setEditable(false);
jTextField.setBackground(Color.WHITE);
diz corresponder cada JTextField a cada JToggleButton e vice-versa
sempre que eu seleccionava um Botão ou um JTextField colocava-o a laranja
Coloquei um teclado virtual ao lado os meus JTextField
[code]
/*
* Trata do ESC e do HOME
*/
KeyListener keyListener = new KeyListener() {
public void keyTyped(KeyEvent e) {
System.out.println("keyTyped " + e);
e = null;
System.out.println(e);
}
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed " + e);
e = null;
System.out.println(e);
}
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == 27) {
jTextField2.setText("");
jTextField2.requestFocus();
System.out.println("ESC");
} else if (e.getKeyCode() == 36) {
jTextField2.setText("");
jTextField2.requestFocus();
System.out.println("HOME");
} else if (e.getKeyCode() == 48 || e.getKeyCode() == 96) {
// 0
if (jToggleButton1.isSelected()) {
jButton21.doClick();
} else if (jToggleButton2.isSelected()) {
jButton21.doClick();
} else if (jToggleButton4.isSelected()) {
jButton21.doClick();
}
} else if (e.getKeyCode() == 49 || e.getKeyCode() == 97) {
// 1
if (jToggleButton1.isSelected()) {
jButton1.doClick();
} else if (jToggleButton2.isSelected()) {
jButton1.doClick();
} else if (jToggleButton4.isSelected()) {
jButton1.doClick();
}
} else if (e.getKeyCode() == 50 || e.getKeyCode() == 98) {
// 2
if (jToggleButton1.isSelected()) {
jButton4.doClick();
} else if (jToggleButton2.isSelected()) {
jButton4.doClick();
} else if (jToggleButton4.isSelected()) {
jButton4.doClick();
}
} else if (e.getKeyCode() == 51 || e.getKeyCode() == 99) {
// 3
if (jToggleButton1.isSelected()) {
jButton9.doClick();
} else if (jToggleButton2.isSelected()) {
jButton9.doClick();
} else if (jToggleButton4.isSelected()) {
jButton9.doClick();
}
} else if (e.getKeyCode() == 52 || e.getKeyCode() == 100) {
// 4
if (jToggleButton1.isSelected()) {
jButton10.doClick();
} else if (jToggleButton2.isSelected()) {
jButton10.doClick();
} else if (jToggleButton4.isSelected()) {
jButton10.doClick();
}
} else if (e.getKeyCode() == 53 || e.getKeyCode() == 101) {
// 5
if (jToggleButton1.isSelected()) {
jButton12.doClick();
} else if (jToggleButton2.isSelected()) {
jButton12.doClick();
} else if (jToggleButton4.isSelected()) {
jButton12.doClick();
}
} else if (e.getKeyCode() == 54 || e.getKeyCode() == 102) {
// 6
if (jToggleButton1.isSelected()) {
jButton17.doClick();
} else if (jToggleButton2.isSelected()) {
jButton17.doClick();
} else if (jToggleButton4.isSelected()) {
jButton17.doClick();
}
} else if (e.getKeyCode() == 55 || e.getKeyCode() == 103) {
// 7
if (jToggleButton1.isSelected()) {
jButton18.doClick();
} else if (jToggleButton2.isSelected()) {
jButton18.doClick();
} else if (jToggleButton4.isSelected()) {
jButton18.doClick();
}
} else if (e.getKeyCode() == 56 || e.getKeyCode() == 104) {
// 8
if (jToggleButton1.isSelected()) {
jButton19.doClick();
} else if (jToggleButton2.isSelected()) {
jButton19.doClick();
} else if (jToggleButton4.isSelected()) {
jButton19.doClick();
}
} else if (e.getKeyCode() == 57 || e.getKeyCode() == 105) {
// 9
if (jToggleButton1.isSelected()) {
jButton20.doClick();
} else if (jToggleButton2.isSelected()) {
jButton20.doClick();
} else if (jToggleButton4.isSelected()) {
jButton20.doClick();
}
} else {
System.out.println("keyPressed " + e);
e = null;
}
}
};
keyListenerBI = keyListener;
mainPanel.addKeyListener(keyListener);
addKeyAndContainerListenerRecursively(jPanel1);
[/code]
e espalhei pela minha aplicação…
private void addKeyAndContainerListenerRecursively(Component c) {
try {
c.addKeyListener(keyListenerBI);
if (c instanceof Container) {
Container cont = (Container) c;
//cont.addContainerListener((ContainerListener) c);
Component[] children = cont.getComponents();
for (int i = 0; i < children.length; i++) {
addKeyAndContainerListenerRecursively(children[i]);
}
}
} catch (Exception e) {
System.out.println("addKeyAndContainerListenerRecursively");
}
}
// TOCAMOS NO KEY BOARD
public void tocaKeyBoard(JTextField jEscreve, String valor) {
if (valor.compareTo("DEL") == 0) {
jEscreve.setText("0.00");
} else if (valor.compareTo("<-") == 0) {
String str = jEscreve.getText().toString();
// .01
if (str.charAt(str.length() - 1) != '0') {
str = str.substring(0, str.length() - 1) + "0";
jEscreve.setText((str));
} // .10
else if (str.charAt(str.length() - 2) != '0') {
str = str.substring(0, str.length() - 2) + "00";
jEscreve.setText((str));
} // 10.00
else {
str = str.substring(0, str.length() - 3);
char[] strChar = str.toCharArray();
int i = strChar.length - 1;
boolean bol = true;
while (i != -1 && bol) {
if (strChar[i] == '0') {
i--;
} else {
strChar[i] = '0';
bol = false;
}
}
StringBuilder builder = new StringBuilder();
builder.append(strChar);
builder.append(".00");
jEscreve.setText((builder.toString()));
}
} //se tivermos na JFormattedTextField 0.00
else if (jEscreve.getText().length() < 10) {
if (jEscreve.getText().toString().compareTo("0.00") == 0) {
// se o valor não for 0
if (!(valor.compareTo("0") == 0)) {
String str = "0.0" + valor;
jEscreve.setText((str));
}
} //se tivermos na JFormattedTextField 0.+0
else if (jEscreve.getText().toString().length() == 4 && jEscreve.getText().toString().charAt(0) == '0' && jEscreve.getText().toString().charAt(3) == '0') {
String str = jEscreve.getText().toString();
char[] strChar = str.toCharArray();
StringBuilder builder = new StringBuilder();
builder.append(String.valueOf(strChar[2]));
builder.append(String.valueOf('.'));
builder.append(String.valueOf(strChar[3]));
builder.append(valor);
jEscreve.setText((builder.toString()));
} // se tivermos outra coisa
else {
String str = jEscreve.getText().toString();
char first = str.charAt(str.length() - 1);
char second = str.charAt(str.length() - 2);
char[] strChar = str.toCharArray();
StringBuilder builder = new StringBuilder();
for (int i = 0; strChar[i] != '.'; i++) {
builder.append(String.valueOf(strChar[i]));
}
builder.append(String.valueOf(second));
builder.append(String.valueOf('.'));
builder.append(String.valueOf(first));
builder.append(valor);
String strFinal = builder.toString();
char[] strCharFinal = strFinal.toCharArray();
//strFinal = strCa(strFinal);
if (strCharFinal[0] == '0' && charCa(strCharFinal[1]) && strCharFinal[2] == '.') {
strFinal = strFinal.substring(1, strFinal.length());
}
jEscreve.setText((strFinal));
}
}
}
Espero que tenha sido util, se alguém souber de outra maneira de fazer diga por favor…
Obrigado
Abraços
Vasco