Offset [resolvido]

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 :stuck_out_tongue:

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