So das is der Code dazu find weis jemand was daran falsch sein soll?
CODE:
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
/**
* Bildschirmtastatur
*
*/
public class Keyboard extends JPanel
{
JTabbedPane tab = new JTabbedPane();
private static JFrame fenster;
static JTextField textField;
//Die einzelnen Panel fuer die Buttons
JPanel bigKeysPanel = new JPanel();
JPanel smallKeysPanel = new JPanel();
JPanel numbersPanel = new JPanel();
JPanel symbolsPanel = new JPanel();
JPanel specialsPanel = new JPanel();
//Namen fuer die Buttons
String[] bigKeys = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","\u00C4","\u00D6","\u00DC"};
String[] smallKeys = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","\u00E4","\u00F6","\u00FC"};
String[] numbers = {"1","2","3","4","5","6","7","8","9","0"};
String[] symbols = {"\u00B0","^","!","\"","\u20AC","$","%","&","\u00DF","(",")","=","?","\u00B4","`","+","-","*","/","#","_","~","\u0040","\u0023","\u0027","\u00B2","\u00B3","{","}","[","]","\\"};
String[] specials = {"Gross","Klein","Zahlen","Symbole","Backspace","Feld loeschen"};
/**
* Bildschirmtastatur
*
* @param width Breite
* @param height Hoehe
*/
public Keyboard(int width, int height, JTextField textField)
{
//Textfield bernehmen
this.textField = textField;
//Groesse einstellen
setPreferredSize(new Dimension(width, height));
//Layout und Groesse fuer specialsPanel setzen
specialsPanel.setLayout(new GridLayout(1,2));
specialsPanel.setPreferredSize(new Dimension(getPreferredSize().width, 50));
//Layouts setzen
bigKeysPanel.setLayout(new GridLayout(3,10));
smallKeysPanel.setLayout(new GridLayout(3,10));
numbersPanel.setLayout(new GridLayout(1,10));
symbolsPanel.setLayout(new GridLayout(3, 11));
//Placement und Groesse fuer tab setzen
tab.setPreferredSize(new Dimension(getPreferredSize().width, getPreferredSize().height - 60));
tab.setTabPlacement(JTabbedPane.EAST);
//Schriften
Font font1 = new Font("Arial",Font.BOLD,15);
Font font2 = new Font("Arial",Font.BOLD,11);
/*
* Tasten mit Bezeichnung, Name und ActionListener versehen
* und zu den entsprechenden Panels hinzufuegen
*/
for(int i = 0; i < bigKeys.length; i++)
{
JButton button = new JButton(bigKeys);
button.setFont(font1);
button.setName(bigKeys);
button.addActionListener(new Action());
bigKeysPanel.add(button);
}
for(int i = 0; i < smallKeys.length; i++)
{
JButton button = new JButton(smallKeys);
button.setFont(font1);
button.setName(smallKeys);
button.addActionListener(new Action());
smallKeysPanel.add(button);
}
for(int i = 0; i < numbers.length; i++)
{
JButton button = new JButton(numbers);
button.setFont(font1);
button.setName(numbers);
button.addActionListener(new Action());
numbersPanel.add(button);
}
for(int i = 0; i < symbols.length; i++)
{
JButton button = new JButton(symbols);
button.setFont(font1);
button.setName(symbols);
button.addActionListener(new Action());
symbolsPanel.add(button);
}
for(int i = 0; i < specials.length; i++)
{
JButton button = new JButton(specials);
button.setFont(font2);
button.setName(specials);
button.addActionListener(new SpezialAction());
specialsPanel.add(button);
}
//Panels zu tab hinzufuegen
tab.addTab("Gross",bigKeysPanel);
tab.addTab("Klein", smallKeysPanel);
tab.addTab("Zahlen", numbersPanel);
tab.addTab("Symbole", symbolsPanel);
add(specialsPanel);
add(tab);
}
public void setTextField(JTextField textField)
{
this.textField = textField;
}
/**
* Aktionen Eingabe
*
* @author sikraemer
*
*/
private class Action implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
//Eingabe an den Text im Passworteingabefeld anhaengen
String text = textField.getText();
text = text + ((JButton)evt.getSource()).getName();
textField.setText(text);
}
}
/**
* Aktionen nicht Eingabe
*
* @author sikraemer
*
*/
private class SpezialAction implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
// tab umschalten
if(((JButton)evt.getSource()).getName().equals("Gross"))
{
tab.setSelectedComponent(bigKeysPanel);
}
else if(((JButton)evt.getSource()).getName().equals("Klein"))
{
tab.setSelectedComponent(smallKeysPanel);
}
else if(((JButton)evt.getSource()).getName().equals("Zahlen"))
{
tab.setSelectedComponent(numbersPanel);
}
else if(((JButton)evt.getSource()).getName().equals("Symbole"))
{
tab.setSelectedComponent(symbolsPanel);
}
//Von hinten loeschen
else if(((JButton)evt.getSource()).getName().equals("Backspace"))
{
String text = textField.getText();
if(text.length() > 0)
{
text = text.substring(0, text.length()-1);
}
textField.setText(text);
}
//Feld loeschen
else if(((JButton)evt.getSource()).getName().equals("Feld loeschen"))
{
textField.setText("");
}
}
}
// MACH FENSTER sichtbar?
public static void main ( String [] args)
{
fenster = new JFrame(" Tastatur");
fenster.pack();
Keyboard keyboard = new Keyboard();
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
fenster.setSize(1000, 800);
}
import java.awt.BorderLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JDialog;
import javax.swing.JTextField;
/**
* Keyboard in einem JDialog
* als Bildschirmtastatur
*/
public class KeyboardDialog extends JDialog implements FocusListener
{
private Keyboard keyboard;
/**
* Erstellt einen KeyboardDialog und zeigt
* ihn an.
* @param tf - Textfield das den Focus der
* Bildschirmtastatur haben soll
*/
public KeyboardDialog(JTextField tf)
{
super();
keyboard = new Keyboard(550, 300, tf);
this.setAlwaysOnTop(true);
this.add(keyboard,BorderLayout.CENTER);
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
this.setResizable(false);
this.setTitle("Display Keyboard");
this.pack();
}
/**
* Keyboard auf neues Textfield setzen
*
* @param tf - Textfield das den Focus der
* Bildschirmtastatur haben soll
*/
public void setNewTextfield(JTextField tf)
{
keyboard.setTextField(tf);
}
/**
* Setzt Texfeld mit Fokus aktiv fü Bildschirmtastatur
*/
public void focusGained(FocusEvent fe)
{
if ((fe.getSource() instanceof JTextField))
{
keyboard.setTextField((JTextField)fe.getSource());
}
}
public void focusLost(FocusEvent fe)
{ /* nicht implementiert */ }
}
}