Files
FH/SS23/AuD/src/UEB06/BaumGUI.java
Your Name 42f2899bbf a
2023-10-03 23:28:51 +02:00

200 lines
5.8 KiB
Java
Raw Blame History

package UEB06;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class BaumGUI extends Frame
{
private Baum<Character> einBaum;
private BaumAnsicht eineBaumAnsicht;
private java.awt.Label zeichenFuehrungstext = new java.awt.Label();
private java.awt.TextField zeichenTextfeld = new java.awt.TextField();
private java.awt.Button suchenDruckknopf = new java.awt.Button();
private java.awt.Button einfuegenDruckknopf = new java.awt.Button();
private java.awt.Button entfernenDruckknopf = new java.awt.Button();
private java.awt.Button demoDruckknopf = new java.awt.Button();
private java.awt.Checkbox enthaltenKontrollkaestchen = new java.awt.Checkbox();
private java.awt.Label infoLabel = new java.awt.Label();
private java.awt.Button traversierenDruckknopf = new java.awt.Button();
private java.awt.TextArea ausgabeTextfeld = new java.awt.TextArea("",0,0,TextArea.SCROLLBARS_NONE);
public BaumGUI()
{
setLayout(null);
setSize(530,505);
zeichenFuehrungstext.setText("Zeichen:");
zeichenFuehrungstext.setAlignment(java.awt.Label.RIGHT);
add(zeichenFuehrungstext);
zeichenFuehrungstext.setBounds(12,32,48,24);
add(zeichenTextfeld);
zeichenTextfeld.setBounds(72,32,48,24);
suchenDruckknopf.setLabel("Suchen");
add(suchenDruckknopf);
suchenDruckknopf.setBackground(java.awt.Color.lightGray);
suchenDruckknopf.setBounds(132,32,84,24);
einfuegenDruckknopf.setLabel("Einf<EFBFBD>gen");
add(einfuegenDruckknopf);
einfuegenDruckknopf.setBackground(java.awt.Color.lightGray);
einfuegenDruckknopf.setBounds(228,32,84,24);
entfernenDruckknopf.setLabel("Entfernen");
add(entfernenDruckknopf);
entfernenDruckknopf.setBackground(java.awt.Color.lightGray);
entfernenDruckknopf.setBounds(324,32,84,24);
demoDruckknopf.setLabel("Demo-Baum");
add(demoDruckknopf);
demoDruckknopf.setBackground(java.awt.Color.lightGray);
demoDruckknopf.setBounds(418,32,84,24);
enthaltenKontrollkaestchen.setLabel("Im Baum enthalten");
enthaltenKontrollkaestchen.setEnabled(false);
add(enthaltenKontrollkaestchen);
enthaltenKontrollkaestchen.setBounds(132,68,132,24);
add(infoLabel);
infoLabel.setBounds(14,292,500,20);
traversierenDruckknopf.setLabel("Traversieren");
add(traversierenDruckknopf);
traversierenDruckknopf.setBackground(java.awt.Color.lightGray);
traversierenDruckknopf.setBounds(14,320,127,26);
add(ausgabeTextfeld);
ausgabeTextfeld.setBounds(14,350,500,144);
AktionsAbhoerer einAktionsAbhoerer = new AktionsAbhoerer();
suchenDruckknopf.addActionListener(einAktionsAbhoerer);
einfuegenDruckknopf.addActionListener(einAktionsAbhoerer);
entfernenDruckknopf.addActionListener(einAktionsAbhoerer);
demoDruckknopf.addActionListener(einAktionsAbhoerer);
TastaturAbhoerer einTastaturAbhoerer = new TastaturAbhoerer();
zeichenTextfeld.addKeyListener(einTastaturAbhoerer);
traversierenDruckknopf.addActionListener(einAktionsAbhoerer);
addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
setVisible(false);
dispose();
System.exit(0);
}
}
);
einBaum = new Baum<Character>();
eineBaumAnsicht = new BaumAnsicht(einBaum);
updateBaumInfo();
}
public void paint(Graphics g)
{
eineBaumAnsicht.ausgeben(15, 500, 120, g);
}
public void updateBaumInfo()
{
final int h = einBaum.hoehe();
infoLabel.setText("Der Baum hat eine H<>he von " + h + ".");
}
// Innere Klassen
class AktionsAbhoerer implements java.awt.event.ActionListener
{
public void actionPerformed(java.awt.event.ActionEvent event)
{
Object object = event.getSource();
if ((object == einfuegenDruckknopf) || (object == entfernenDruckknopf) || (object == suchenDruckknopf))
{
String text = zeichenTextfeld.getText();
if ((text != null) && (text.length() > 0))
{
char zeichen = text.charAt(0);
if (object == einfuegenDruckknopf)
{
einBaum.einfuegen(zeichen);
zeichenTextfeld.setText("");
repaint();
updateBaumInfo();
}
else
if (object == entfernenDruckknopf)
{
einBaum.entfernen(zeichen);
repaint();
updateBaumInfo();
}
else
if (object == suchenDruckknopf)
{
enthaltenKontrollkaestchen.setState(einBaum.suchen(zeichen));
}
}
}
else
if (object == traversierenDruckknopf)
{
ausgabeTextfeld.setText("Pre-Order:\n");
ausgabeTextfeld.append(einBaum.traversierePreOrder());
ausgabeTextfeld.append("\n\nIn-Order:\n");
ausgabeTextfeld.append(einBaum.traversiereInOrder());
ausgabeTextfeld.append("\n\nPost-Order:\n");
ausgabeTextfeld.append(einBaum.traversierePostOrder());
}
else
if (object == demoDruckknopf)
{
System.out.println("XXX");
einBaum.attach(
new Knoten<Character>('E',
new Knoten<Character>('D',
new Knoten<Character>('A',
null,
null),
null),
new Knoten<Character>('S',
new Knoten<Character>('O',
null,
new Knoten<Character>('P',
null,
new Knoten<Character>('R',
new Knoten<Character>('Q',
null,
null),
null))),
new Knoten<Character>('Z',
null,
null))));
repaint();
updateBaumInfo();
}
}
}
class TastaturAbhoerer extends java.awt.event.KeyAdapter
{
public void keyReleased(java.awt.event.KeyEvent event)
{
if (event.getSource() == zeichenTextfeld)
{
String text = zeichenTextfeld.getText();
if ((text != null) && (text.length() > 0))
{
char zeichen = text.charAt(0);
if (event.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER)
{
einBaum.einfuegen(zeichen);
zeichenTextfeld.setText("");
repaint();
}
}
}
}
}
}