Ich möchte, dass durch das Drücken der Enter-Taste ein Ereignis ausgelöst wird, tut es aber nicht.
Hier der Code
Hier der Code
Code:
public class BinBaumPanel extends JPanel implements ActionListener, KeyListener{
private BinBaum_grafisch b;
private int[] feld = {4,3,7,8,6,3,2,1,0,9,10,5,12};
private JButton enter, loeschen;
private JLabel l1;
private JTextField t1;
private Dimension d = new Dimension(50,27);
private int s, x_akt, y_akt, e_akt, x_Pos, y_Pos;
private int x_Prev, y_Prev, versatz_s, versatz_l;
private Font f = new Font("Verdana", Font.BOLD, 12);
public BinBaumPanel(){
b = new BinBaum_grafisch();
x_akt = 200;
y_akt = 80;
e_akt = 0;
versatz_l = 5;
l1 = new JLabel("Geben Sie eine ganze Zahl >=0 ein:", SwingConstants.RIGHT);
t1 = new JTextField("");
t1.setPreferredSize(d);
enter = new JButton("EINGEBEN");
enter.addActionListener(this);
//enter.addKeyListener(new MyKL());
add(l1);
add(t1);
add(enter);
addKeyListener(this);
}
public void ausgeben(int[] f){
Graphics g = getGraphics();
f = feld;
//einfuegenFeld(f);
for (int i=0; i<feld.length; i++){
if (i==feld.length)break;
int vorg = b.findeVorgaenger(feld[i], feld[i]);
x_Pos = b.getX(feld[i], x_akt, e_akt);
x_Prev = b.getX(vorg, x_akt, e_akt);
y_Pos = b.getY(feld[i], y_akt, e_akt);
y_Prev = b.getY(vorg, y_akt,e_akt);
if (x_Pos < x_Prev){
versatz_s = 7;
}
else {
versatz_s = 0;
}
String s = String.valueOf(feld[i]);
g.drawString(s, x_Pos-versatz_s, y_Pos);
g.drawLine(x_Prev, y_Prev, x_Pos, y_Pos);
}
}
public void paintComponent (Graphics grafik)
{
//grafik = leinwand.getGraphics();
super.paintComponents(grafik);
grafik.setColor(Color.lightGray);
// Horizontale Rasterlinien
for (int y=0; y<this.getHeight(); y+= 40){
grafik.drawLine(0,y,400,y);
}
// Vertikale Rasterlinien
for (int x=0; x<getHeight(); x+= 20){
grafik.drawLine(x,40,x,500);
}
}
/**
* Fügt die Schlüssel des Feldes vom Typ int[] in
* den Suchbaum ein;
* @param feld das Feld von Schlüssel;
*/
public void einfuegenFeld(int[] feld){
for (int i=0; i<feld.length; i++){
b.einfuegen(feld[i]);
}
}
public void einfuegenSchluessel(int schluessel){
int s = Integer.parseInt(t1.getText());
b.einfuegen(s);
}
public void zeichneSchluessel(int schluessel){
Graphics g = getGraphics();
int s = schluessel;
b.einfuegen(s);
int vorg = b.findeVorgaenger(s, s);
x_Pos = b.getX(s, x_akt, e_akt);
x_Prev = b.getX(vorg, x_akt, e_akt);
y_Pos = b.getY(s, y_akt, e_akt);
y_Prev = b.getY(vorg, y_akt,e_akt);
FontMetrics fm = getFontMetrics(f);
String s_zahl = String.valueOf(s);
int s_breite = fm.stringWidth(s_zahl);
versatz_s = (int) Math.round(s_breite/2);
//Umwandeln des Schlüssels vom Typ int in
//einen String und Ausgabe der Zahl und der Linien
String zahl = String.valueOf(s);
int h = b.getHoehe();
if (h==1){
g.drawString(zahl, x_Pos-versatz_s, y_Pos+versatz_l);
}
else{
g.drawString(zahl, x_Pos-versatz_s, y_Pos+versatz_l);
if (x_Prev > x_Pos){
g.drawLine(x_Prev-versatz_l, y_Prev+versatz_l, x_Pos+versatz_l, y_Pos-versatz_l);
}
else{
g.drawLine(x_Prev+versatz_l, y_Prev+versatz_l, x_Pos-versatz_l, y_Pos-versatz_l);
}
}
}
/**
* Gibt den Ebenenabstand auf der y-Achse zurück
*/
public int getEbenenAbstand(){
return b.getEbenenAbstand();
}
public void actionPerformed(ActionEvent e){
Object source = e.getSource();
if (source == enter){
if(t1.getText().equals("")){return;}
else{
System.out.println("Enter gedrückt!");
zeichneSchluessel(Integer.parseInt(t1.getText()));
}
//ausgeben(feld);
}
}
//class MyKL implements KeyListener{
public void keyReleased(KeyEvent e)
{
int code = e.getKeyCode();
if (code == e.VK_ENTER){
if (t1.getText().equals("")){return;}
else{
System.out.println("Enter gedrückt!");
zeichneSchluessel(Integer.parseInt(t1.getText()));
}
}
}
public void keyPressed(KeyEvent e){if (e.getKeyChar() == e.VK_ENTER){
if (t1.getText().equals("")){return;}
else{
System.out.println("Enter gedrückt!");
zeichneSchluessel(Integer.parseInt(t1.getText()));
}
}}
public void keyTyped(KeyEvent e){if (e.getKeyChar() == e.VK_ENTER){
if (t1.getText().equals("")){return;}
else{
System.out.println("Enter gedrückt!");
zeichneSchluessel(Integer.parseInt(t1.getText()));
}
}}
//}
}