Swing Virtuelle Tastatur mit Accents

mathiasj

Bekanntes Mitglied
Hallo,
ich habe ein Vokabellernprogramm geschrieben, und würde gerne eine Funktion hinzufügen, bei der eine virtuelle Tastatur aufgerufen wird, mit der man Sonderzeichen(wie z.B accents) eingeben kann. Also, wenn z.B. ein Deutscher französisch lernt, dass er dann auch französische Vokabeln eingeben kann. Ist das irgendwie realisierbar?
 

mathiasj

Bekanntes Mitglied
EDIT: Das Einzige, was ich mir bisher vorstellen könnte wäre ein Fenster mit JButtons für jedes Sonderzeichen zu erstellen, dass ich im Internet kopieren kann. Aber das wäre ziemlich viel Arbeit; man müsste für jeden JButton einen ActionListener hinzfügen und co... Habt ihr noch andere Ideen?
 

mathiasj

Bekanntes Mitglied
Und was soll mir das bringen? Ich kann alle accents aus dem Internet kopieren. Aber ich meine, ob es irgendeine vorgefertigte Funktion in Java gibt?
 

benhaze

Mitglied
Das Einzige, was ich mir bisher vorstellen könnte wäre ein Fenster mit JButtons für jedes Sonderzeichen zu erstellen, dass ich im Internet kopieren kann. Aber das wäre ziemlich viel Arbeit; man müsste für jeden JButton einen ActionListener hinzfügen und co... Habt ihr noch andere Ideen?

Naja...ganz so schlimm stell ich es mir nicht vor...
Einmal ein Layout erstellt, dann eine Map für die verschiedenen Sprachen/Layouts/Beschriftungen...
und ab dafür...
Die Anordnung der *Buttons* verändert sich ja nicht...nur die *Beschriftung* (laut einer Map)
Es reicht auch ein einziger Action-Listener, der dann aber allen Buttons angehängt wird.
Im Action-Performed(Component p_invoker) holst du dir dann einfach den Button-Text vom p_invoker...

Die größte Arbeit ist das *einmalige* Erstellen des Keyboards, das Ändern des Layouts ist am Einfachsten.
 
T

tröööt

Gast
du musst doch nicht für JEDES zeichen einen button machen ... dafür gibt es doch die sog. key-strokes ... also das eine steuer-taste die belegung einer anderen taste ändern kann ...

wenn man für wirklich JEDES zeichen eine taste hätte bräuchte man kein SHIFT, ALT, STRG, etc ...
und genau so musst du auch arbeiten ...

wenn du also z.b. erkennst das "´" getippt wurde speicherst du dir das und ersetzt dann den nächsten buchstaben , z.b. "e" durch den passenden mit accent : "é" ... genau wie es der tastatur-treiber selbst macht wenn man erst einmal "´" drückt und dann e : é ...

natürlich kann man mit nem deutschen layout nicht alle zeichen der französichen sprache darstellen ... siehe nur dieses komische C mit dem haken unten dran ... aber dafür gibts ja die uni-code tabelle ... und java selbst arbeitet eh mit UTF-8 ... du kannst also einfach "\uhhhh" im source nutzen ...
 

mathiasj

Bekanntes Mitglied
OK, danke für die vielen Vorschläge! Ich habe jetzt aber etwas gefunden, was eig. funktionieren müsste:

Java:
class Tastatur extends JFrame {
    String sonderzeichen = "ùûÿàâæçéèêëïîôœ";
    Tastatur() {
      super("Sonderzeichen");
      
      for(int i = 0; i < sonderzeichen.length(); i++) {
        String beschriftung = "" + sonderzeichen.charAt(i);
        add(new MeinButton(beschriftung);
      }
    }
    
    class MeinButton extends JButton implements ActionListener {
      MeinButton(String name) {
        super(name);
        addActionListener(this);
      }
      
      public void actionPerformed(ActionEvent e) {
        frage.append(getText());
      }
    }
  }
}

Wenn ich das aber ausführe, bekomme ich nur ein Fenster mit einem einzigen Button ohne Beschriftung, der das ganze Fenster ausfüllt...
 
G

Gast2

Gast
JFrame hat standardmäßig ein BorderLayout. Ein add() fügt eine Komponente dann in den CENTER Bereich, ein weiteres add() überschreibt dann immer den CENTER Bereich.

Du musst dem contentPane also als erstes mal ein richtiges Layout setzen. In deinem Fall würde ich nen FlowLayout verwenden:
Java:
getContentPane().setLayout(new FlowLayout());
 
T

tröööt

Gast
[JAVA=7] String beschriftung = "" + sonderzeichen.charAt(i);[/code]

wenn ich sowas schon wieder sehe ...
ganz erlich ... nutzt hier String.substring(i, i+1) ... das liefert einen String ... und erspart dir die concation ... denn diese wird vom compiler nämlich so umgesetzt :
Java:
String beschriftung=(new StringBuilder()).append("").append(sonderzeichen.charAt(i)).toString();
und das ist einfach nur bad code ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Suche "virtuelle Tastatur" Allgemeine Java-Themen 3
P Virtuelle Tastatur Allgemeine Java-Themen 5
J Virtuelle Maschine vs Compiler Allgemeine Java-Themen 12
R Virtuelle Serielle Schnittstellen mit RXTX Allgemeine Java-Themen 2
S Virtuelle Datei erstellen Allgemeine Java-Themen 9
D virtuelle Würmer - formelle Fehlerbeseitigung Allgemeine Java-Themen 5
B virtuelle Datei Allgemeine Java-Themen 6
S Virtuelle Klasse in Java Allgemeine Java-Themen 3
G Virtuelle Dateien Java? Allgemeine Java-Themen 2
M Java die Tastatur übernehmen lassen Allgemeine Java-Themen 5
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
M Event Handling Tastatur abfrage Allgemeine Java-Themen 5
S Input/Output Tastatur als Midi-Keyboard Allgemeine Java-Themen 2
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
P Matrix von Tastatur in 2D Array??? Allgemeine Java-Themen 7
D Tastatur Aktion Allgemeine Java-Themen 36
R Java Tastatur überwachung Allgemeine Java-Themen 2
P Tastatur abfrage ohne KeyListener Allgemeine Java-Themen 3
M Tastatur eingabe über Buttons Allgemeine Java-Themen 15
X Motor mit Tastatur ansteuern Allgemeine Java-Themen 5
H tastatur von englisch auf deutsch stellen Allgemeine Java-Themen 3
T Einzelnes Zeichen von der Tastatur einlesen, aber ohne Enter Allgemeine Java-Themen 4
J Java reagiert nicht mehr auf die Tastatur Allgemeine Java-Themen 2
F JavaProgramm mit der Tastatur Steuern Allgemeine Java-Themen 3
G Tastatur abfrage Allgemeine Java-Themen 8
A Listener Tastatur Allgemeine Java-Themen 3
T Tastatur global abfragen Allgemeine Java-Themen 2
M Tastatur sperren Allgemeine Java-Themen 6
F Tastatur klick klick Allgemeine Java-Themen 5
T Prozessorticks/Tastatur überwachen/ -> Wiederholbarkeit? Allgemeine Java-Themen 15
conan2 Midi: Tastatur-Klavier Allgemeine Java-Themen 2
H Tastatur eingaben verwenden Allgemeine Java-Themen 30
A Serielle Schnittstelle | Barcodescan | ohne Tastatur Allgemeine Java-Themen 11
H Tastatur abhören Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben