Offset [resolvido]

5 respostas
vfpribeiro

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

5 Respostas

Gustavo_Sperandio

Deixa eu ver se entendi?
você quer escrever em determinada posição de uma String? tem como dar um exemplo?

vfpribeiro

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

vfpribeiro

Já resolvi

drigo.angelo

Posta a solução aí, se for possível, e coloca [resolvido] no título do topico :stuck_out_tongue:

vfpribeiro

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

/*
         * 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);

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

Criado 22 de março de 2011
Ultima resposta 23 de mar. de 2011
Respostas 5
Participantes 3