Swing Tastatur zeichen

Lucaaa

Bekanntes Mitglied
Hallo!
Ich möchte eine Tastatur zeichnen.
Dafür habe ich folgendes
Java:
package com.luxaaa.pbvortrag.ui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
public class KeyBoard extends JPanel {
 private static final long serialVersionUID = 1L;
 
 String[][] keys = new String[][] {
  new String[] {"^", "1","2" ,"3" ,"4" ,"5" ,"6" ,"7","8", "9", "0", "ß"},
  new String[] {"*", "Q", "W","E" ,"R" ,"T" ,"Z" ,"U" ,"I","O", "P", "Ü"},
  new String[] {"CL", "A", "S","D" ,"F" ,"G" ,"H" ,"J" ,"K","L", "Ö", "Ä"},
  new String[] {"SH","Y", "X","C" ,"V" ,"B" ,"N" ,"M" ,",",".", "-"}
 };
 private int keyPadding = 10;
 int keyW, keyH;
 float spacePercentage = 0.6f;
 private float[][] keyScales = new float[][] {
  new float[] {1f, 1f,1f ,1f ,1f ,1f ,1f ,1f,1f, 1f, 1f, 1f},
  new float[] {1.2f, 1f,1f ,1f ,1f ,1f ,1f ,1f,1f, 1f, 1f, 1f, 1f},
  new float[] {1.4f, 1f,1f ,1f ,1f ,1f ,1f ,1f,1f, 1f, 1f, 1f, 1f},
  new float[] {1.6f, 1f,1f ,1f ,1f ,1f ,1f ,1f,1f, 1f, 1f, 1f}
 };
 
 
 private int width, height;
 
 // graphic stuff
 Color colBg = Color.DARK_GRAY;
 Color colKey = Color.LIGHT_GRAY;
 
 public KeyBoard(int w) {
  this.width = w;
  keyW = calcKeyW(w);
  keyH = keyW;
  height = (keys.length+1)*keyPadding + (keys.length+1)*keyH + keyPadding;
  setPreferredSize(new Dimension(width, height));
  System.out.println(keyW);
 }
 
 private int calcKeyW(int width) {
  // longest key row
  float longestRow = 0;
  for (int i=0; i<keyScales.length; i++) {
   float sum =0;
   for(int j=0; j<keyScales[i].length; j++) {
    sum += keyScales[i][j];
   }
   if(sum > longestRow) longestRow = sum;
  }
 
  int maxKeys = 0;
  for(String[] keyRow : keys) {
   if(keyRow.length > maxKeys) maxKeys = keyRow.length;
  }
 
  // padding
  int padding = (int)(keyPadding*(maxKeys+1));
 
  // key size
  return (int)((width-padding) / longestRow);
 }
 
 public void paintComponent(Graphics g) {
 
  // paint background
  g.setColor(colBg);
  g.fillRect(0, 0, width, height);
 
  // draw KeyBoard
  g.setColor(colKey);
  for(int i=0; i<keys.length; i++) {
   for (int j=0; j<keys[i].length; j++) {
    int padding = (j+1)*keyPadding;
    int keyX = 0;
     if(j>0) {
      for(int k =0; k<j; k++) {
       keyX += (int) (keyScales[i][k]*keyW);
      }
     }
   
    keyX +=padding;
    g.drawRect(keyX , i*keyH + i*keyPadding + keyPadding, (int)(keyScales[i][j]*keyW), keyH);
    g.drawString(keys[i][j], keyX, i*keyH + i*keyPadding + keyPadding);
   }
  }
  // draw space key
   int spaceW = (int)( (float)width*spacePercentage);
   int spaceX = (width-spaceW) /2;
   int spaceY = height - keyH - keyPadding;
   g.drawRect(spaceX, spaceY, spaceW, keyH);
 }

}

Irgendwie ist da recht noch zu viel Platz
warum?

Oder gibt es vielleicht einfachere Methode?
 

Hatsi09

Aktives Mitglied
mir persönlich ist das viel zu viel Arbeit, Layouts zu setzen, Farben usw. vor allem bei großen GUIs.
Mein Tipp an dich: Nimm doch den GUI-Editor, damit spart man sich viel Zeit und macht weniger Fehler, zudem siehst du gleich wie es aussieht.
Hast du bedacht, dass ein Textfeld von einem Element nie bis zum Rand geht? Wenn also deine maxKey = 2.0 ist und du setzt das Element auf eine Breite von 2.0, dann hat dein Text dort keinen Platz, weil er einen Rand noch abzieht.
 

mrBrown

Super-Moderator
Mitarbeiter
mir persönlich ist das viel zu viel Arbeit, Layouts zu setzen, Farben usw. vor allem bei großen GUIs.
Mein Tipp an dich: Nimm doch den GUI-Editor, damit spart man sich viel Zeit und macht weniger Fehler, zudem siehst du gleich wie es aussieht.
Bei Swing ist das ein Tipp, der nahezu immer nach hinten losgeht, wie Swing einfach nicht dafür ausgelegt ist
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Tastatur Zeichen einlesen ohne sichtbares Fenster AWT, Swing, JavaFX & SWT 8
N Objecte bewegen mit Tastatur AWT, Swing, JavaFX & SWT 5
T GUI über Tastatur bedienen AWT, Swing, JavaFX & SWT 3
N Swing JScrollPane mit Tastatur bedienen? AWT, Swing, JavaFX & SWT 0
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
G Tastatur abfragen AWT, Swing, JavaFX & SWT 0
V Tastatur KeyListener für mehrere Buttons AWT, Swing, JavaFX & SWT 1
M Button klicken anstelle der Tastatur AWT, Swing, JavaFX & SWT 2
7 KeyListener tastatur temporär blockieren AWT, Swing, JavaFX & SWT 7
I ausgewählte Zeile mit Hilfe der Tastatur löschen! AWT, Swing, JavaFX & SWT 3
kodela Swing JToggleButton und Tastatur AWT, Swing, JavaFX & SWT 2
J Inaktivität von Maus und Tastatur AWT, Swing, JavaFX & SWT 4
C Swing Änderung der Tastatur-Navigation in einer JTable AWT, Swing, JavaFX & SWT 4
S Tastatur-Shortcut klappt nicht AWT, Swing, JavaFX & SWT 17
S Tastatur Event auserhalb des fokuses aufnehmen AWT, Swing, JavaFX & SWT 4
vladimir Swing virtuelle Tastatur realisieren AWT, Swing, JavaFX & SWT 3
M Tastatur simulieren AWT, Swing, JavaFX & SWT 20
D Swing JTree Was passiert beim Tippen auf Tastatur. AWT, Swing, JavaFX & SWT 2
B JTree - Kontextmenü per Tastatur öffnen AWT, Swing, JavaFX & SWT 3
D Tastatur Shortcut auslösen bei FocusGained-Event AWT, Swing, JavaFX & SWT 2
B JTable & Tastatur-Shortcuts AWT, Swing, JavaFX & SWT 3
J Auslösung von Aktionen über Tastatur (Netbeans) AWT, Swing, JavaFX & SWT 23
S Virtuelle Tastatur AWT, Swing, JavaFX & SWT 30
M Tastatur komplett sperren? AWT, Swing, JavaFX & SWT 9
T Gleichzeitiges Steuern von 2 Objekten über Tastatur AWT, Swing, JavaFX & SWT 8
I Globale Tastatur-Events abfragen AWT, Swing, JavaFX & SWT 3
R Button actions mit Tastatur ausführen AWT, Swing, JavaFX & SWT 6
F JComboBox setEditable( true ) auf Tastatur Events reagieren AWT, Swing, JavaFX & SWT 4
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
A 2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt AWT, Swing, JavaFX & SWT 28
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
A Zeichen-Steuerelement in Swing AWT, Swing, JavaFX & SWT 0
kaoZ Swing Aktives Zeichen für Spieleprogrammierung ? AWT, Swing, JavaFX & SWT 8
D Swing Manuellen Kreis zeichen AWT, Swing, JavaFX & SWT 22
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
R einzelne Zeichen in jTable einlesen AWT, Swing, JavaFX & SWT 10
S SWT [TextBox] Bestimmtes Zeichen entfernen unterbinden AWT, Swing, JavaFX & SWT 3
P readLine solange es mit einem bestimmten Zeichen anfängt AWT, Swing, JavaFX & SWT 5
P Komische Zeichen beim Abspeichern von TextFelder AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
DEvent Swing JTextField Anzahl an sichtbaren Zeichen AWT, Swing, JavaFX & SWT 4
D JLabel und JPanel -> Neu zeichen?! oO AWT, Swing, JavaFX & SWT 2
E jTextFiled max 160 Zeichen? AWT, Swing, JavaFX & SWT 4
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
Q AWT Choice ein Zeichen hinzufügen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Textbasiertes 2D Spiel, jedes Zeichen manipulierbar AWT, Swing, JavaFX & SWT 7
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
T Zeichen/char in Bild umwandeln und darstellen AWT, Swing, JavaFX & SWT 10
2 Bücher über Zeichen und Baumalgorithmen AWT, Swing, JavaFX & SWT 5
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
F Zeichen per Menuitem funktioniert nicht AWT, Swing, JavaFX & SWT 2
V Nur zulässige Zeichen in JTable-Zellen eintragen können AWT, Swing, JavaFX & SWT 2
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
P Zeichen abhängig davon, ob sich eine Variable geändert hat AWT, Swing, JavaFX & SWT 2
G Blinkenden Punkt zeichen AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J jTextarea Anzahl Zeichen in einer Zeile begrenzen AWT, Swing, JavaFX & SWT 2
Lazybone CMYK Zeichen AWT, Swing, JavaFX & SWT 12
H Polyline zeichen, aber wie? AWT, Swing, JavaFX & SWT 2
D jTable ausdrucken => € zeichen wird nicht richtig angezei AWT, Swing, JavaFX & SWT 7
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K UNICODE ZEICHEN in den SWing-GUIs AWT, Swing, JavaFX & SWT 4
B Dreiecke zeichen AWT, Swing, JavaFX & SWT 3
D Zeichen ein Pixel mit Java2D AWT, Swing, JavaFX & SWT 15
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
F Zeichen von Linien, Rechtecken, zb wie in paint AWT, Swing, JavaFX & SWT 2
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
C PI-Zeichen im JLabel AWT, Swing, JavaFX & SWT 3
G Zeilenumbruch nach n Zeichen in JTextArea AWT, Swing, JavaFX & SWT 24
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
T JLayerdPane: wie etwas über eine AWT Komponente zeichen? AWT, Swing, JavaFX & SWT 2
D JTextPane: "Nichtdruckbare Zeichen" anzeigen & AWT, Swing, JavaFX & SWT 4
R letztes Zeichen aus textfeld auslesen AWT, Swing, JavaFX & SWT 2
M rendern von zeichen AWT, Swing, JavaFX & SWT 4
R Zeichen-Markierungrahmen AWT, Swing, JavaFX & SWT 5
F Eingabe in JPasswordField auf vier Zeichen beschränken AWT, Swing, JavaFX & SWT 3
M Transparentes gif als extra Klasse auf einen JFrame zeichen AWT, Swing, JavaFX & SWT 17
B ComboBox: nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 5
G Linien in ein Koordinatensystem zeichen AWT, Swing, JavaFX & SWT 7
H funktionen in ein koordinatensystem zeichen AWT, Swing, JavaFX & SWT 5
B Erstes Zeichen in einem String toUpperCase ??? AWT, Swing, JavaFX & SWT 4
bummerland ein zeichen nach einem zeilenumbruch einfügen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben