Avatar billede quaid Nybegynder
16. september 2001 - 16:34 Der er 1 kommentar og
1 løsning

TextField på touch skærm

Jeg har lavet et program der skal kunne bruges på en pc med touch skærm. Der er nogle TextFields hvor der skal kunne indtastes værdier fra et nummer tastatur bestående af JButtons. Problemet er nu, hvordan jeg lettest får værdien ind i et bestemt TextField?? Jeg har en ide om at det skal være sådan at man først markere med fingeren på det TextField man ønsker at indtaste i, og derefter taster på JButtons nummer  tastaturet.
Avatar billede logical Nybegynder
17. september 2001 - 08:53 #1
Jeg kunne ikke lade være at prøve:

Der er noget demo kode nede i main, som opretter den normale formular, og bruger klassen NumberPad. Man kan evt. supplere med en button som explicit åbner for editeringen (Hvis requestfocus skulle fejle eller noget).

Håber det kan give dig lidt inspiration.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class NumberPad {
    private JButton no1, ok;
    private JTextField destination;
    private JFrame frame;

   
    public NumberPad(JTextField destination) {
        this.destination = destination;
       
        frame = new JFrame(\"Enter data\");
        frame.getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT));

        // Call hide on close
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                hide();
            }
        });
       
        addButtons();
       
        // Show this panel, when destination receive focus.
        destination.addFocusListener(new FocusListener() {
            public void focusGained(FocusEvent fe) {
                show();
            }
            public void focusLost(FocusEvent fe) {}
        });
       
        frame.pack();
    }

    private void addButtons() {
        no1 = new JButton(\"1\");
        no1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                append(\"1\");
            }
        });
        ok = new JButton(\"Ok\");
        ok.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                hide();
            }
        });
        frame.getContentPane().add(no1);
        frame.getContentPane().add(ok);
    }

    private void append(String s) {
                //destination.append(s);
                destination.setText(destination.getText() + s);
    }
   
    public void show() {
        frame.setVisible(true);
    }
   
    public void hide() {
        frame.setVisible(false);
        destination.transferFocus();
    }
   
    public static void main (String args[]) {
        JFrame frame = new JFrame(\"Accessibility\");
        frame.getContentPane().setLayout(new FlowLayout());
        frame.getContentPane().add(new JButton(\"Dummy\"));
        JTextField tf = new JTextField(20);
        // Add the helper frame. We don\'t even need a reference.
        new NumberPad(tf);
        frame.getContentPane().add(tf);
        frame.getContentPane().add(new JButton(\"Dummy\"));
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
   
}
Avatar billede quaid Nybegynder
17. september 2001 - 21:00 #2
Så kører det bare. Mange tak
MVH Quaid
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester