/****************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm zeigt, als einfuehrende Demo in das Kapitel */ /* zur Oberflaechenprogrammierung, einen Frame mit einem Label, */ /* einem Textfeld und zwei Buttons. */ /****************************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class OflDemo { public static void main(String args[]) { //// Deklarationen fuer Komponenten der Oberflaeche: JFrame frame; // Rahmen der Oberflaeche JLabel label; // fester Text JButton button1, button2; // Buttons JTextField textfeld; // Feld zur Textausgabe // Listener fuer die Buttons: // Definiert Aktion, die beim Druecken der Buttons ausgefuehrt werden soll class ButtonListener implements ActionListener { JTextField tf; // Textfeld, in das der ButtonListener eine Ausgabe schreiben soll // Konstruktor zur Initialisierung des Attributs tf ButtonListener(JTextField tf) { this.tf = tf; } // Operation, die beim Druecken des Buttons ausgefuehrt werden soll: public void actionPerformed(ActionEvent e) { // Ermittlung der Beschriftung des gedrueckten Buttons: String ButtonText = new String(((JButton)e.getSource()).getText()); // je nach Beschriftung Setzen oder Loeschen des Textfelds: if (ButtonText.equals("Textfeld setzen")) tf.setText("HELLO WORLD"); if (ButtonText.equals("Textfeld loeschen")) tf.setText(""); } } //// Anweisungen zur Erzeugung der Oberflaeche: // Frame erzeugen: frame = new JFrame("Ein erster Frame"); // Frame-Layout setzen: frame.getContentPane().setLayout(new GridLayout(5,1)); // Label mit Beschriftung und Zeichentyp erzeugen ... label = new JLabel("Ein Textfeld:"); label.setFont(new Font("Arial",Font.BOLD,24)); label.setForeground(Color.black); // ... und zum Frame hinzufuegen: frame.getContentPane().add(label); // Textfeld mit Zeichentyp und -farbe erzeugen ... textfeld = new JTextField(); textfeld.setFont(new Font("Arial",Font.BOLD,24)); textfeld.setForeground(Color.red); // ... und zum Frame hinzufuegen: frame.getContentPane().add(textfeld); // Zwei beschriftete Buttons erzeugen ... button1 = new JButton("Textfeld setzen"); button1.setFont(new Font("Arial",Font.BOLD,24)); button1.setForeground(Color.black); button2 = new JButton("Textfeld loeschen"); button2.setFont(new Font("Arial",Font.BOLD,24)); button2.setForeground(Color.black); // ... Listener registrieren, der bei Druecken // des Buttons ausgefuehrt werden soll ... button1.addActionListener(new ButtonListener(textfeld)); button2.addActionListener(new ButtonListener(textfeld)); // ... und zum Frame hinzufuegen: frame.getContentPane().add(Box.createVerticalStrut(10)); frame.getContentPane().add(button1); frame.getContentPane().add(button2); // Frame sichtbar machen: frame.pack(); frame.setVisible(true); // Position und Groeße des Frames setzen: frame.setLocation(100,100); frame.setSize(250,240); } }