Programmieren in Java 17. Übung 1. Aufgabe Schreibe ein Programm, das eine Textdatei (z.B. *.java“) aus dem aktuellen Verzeichnis über eine „TextArea“ auf ein Fenster des Bildschirms abbildet. Jede Zeile soll dabei durchnummeriert werden. Die Nummerierung ist in Kommentarzeilen einzuschließen. Zur Ermittlung der abzubildenen Datei ist ein „FileDialog“ heranzuziehen. Die Abbildung soll ein einem speziellen Font „Helvetica“, im Stil Font.Plain“ und mit der Fontgröße 10 erfolgen. Das Fenster soll nach der Anzeige vergrößert werden können und schließlich auch wieder geschlossen werden können. 2. Aufgabe Erstelle eine Java-Anwendung, die ein Fenster mit einem grünen Oval zeigt: Der Fensterinhalt soll als Button fungieren. Falls dieser Button gedrückt wird (Mausklick) soll auf der Konsole „Befehlsausführung“ausgegeben werden. Falls mit der Maus die Fensterfläche überstrichen wird, soll der Hintergrund „rot“werden. Falls die Maus die Fensterfläche verlässt, soll der Anfangszustand, d.h. ein Hintergrung mit der Farbe „orange“, wiederhergestellt werden. 3. Aufgabe Lies zwei ganze Zahlen über eine Eingabezeile ein und bestimme das Maximum dieser Zahlen. Die Ausgabe soll auf die Konsole erfolgen. 4. Aufgabe Schreibe eine Java-Anwendung, die Dateinamen über die Kommandozeile einliest und den Inhalt dieser (Text-) Dateien zeilenweise auf der Konsole ausgibt. Exceptions bzw. Fehlerbehandlungsmaßnahmen sind aufzufangen bzw. einzurichten. 5. Aufgabe Schreibe ein Java-Anwendung, die den Text „Ein gutes, erfolgreiches neues Jahr“in einem Lauffenster der Größe „300 mal 100“ausgibt 1 Programmieren in Java Lösungen 1. Aufgabe import java.awt.*; import java.io.*; import java.awt.event.*; public class Aufg1 extends Frame { private LineNumberReader ein; public Aufg1() throws IOException { FileDialog d = new FileDialog( this, "Welche Datei soll geoeffnet werden?"); d.setFile("*.java"); d.setDirectory("."); // Aktuelles Verzeichnis d.show(); String datei = "*.*"; if ((datei = d.getFile()) != null) { try { ein = new LineNumberReader(new FileReader(datei)); } catch ( FileNotFoundException a) { throw a; } // dateiName.setText(datei); // verzeichnis.setText(d.getDirectory()); try { dateiDarstellen(); } catch (IOException a ) { throw a; } } else { } } public void dateiDarstellen() throws IOException { try { String s = new String(); TextArea textBereich = new TextArea(s,24,80); while ((s = ein.readLine()) != null) { s = "/* " + ein.getLineNumber() + " */ " + s + '\n'; textBereich.append(s); } textBereich.setFont(new Font("Helvetica",Font.PLAIN,10)); textBereich.setEditable( false); this.add("Center",textBereich); } catch (IOException e) { } this.show(); } public static void main(String args[]) throws IOException { Frame f = new Aufg1(); f.addWindowListener( new WindowAdapter() { 2 Programmieren in Java public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setVisible(true); } } 2. Aufgabe import java.awt.*; import java.awt.event.*; class MeinButton extends Button { Aufg2 a; public MeinButton() { super(); setBackground(Color.orange); // Aktivierung des Filters enableEvents(AWTEvent.MOUSE_EVENT_MASK); } public MeinButton(Aufg2 a) { this(); this.a = a; } protected void processEvent(AWTEvent ae) { if (ae.getID() == MouseEvent.MOUSE_ENTERED) { setBackground(Color.red); } else if (ae.getID() == MouseEvent.MOUSE_EXITED) { setBackground(Color.orange); } else if (ae.getID() == MouseEvent.MOUSE_CLICKED) { a.test(); } super.processEvent(ae); } public void paint(Graphics g) { Rectangle r = getBounds(); g.setColor(Color.green); g.fillOval(2,2,r.width-4,r.height-4); } } public class Aufg2 { public void test() { System.out.println("Befehsausfuehrung"); } public static void main(String [] args) 3 Programmieren in Java { Aufg2 anw = new Aufg2(); Frame f = new Frame(" ButtonTest"); f.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); MeinButton mb = new MeinButton(anw); f.add(mb); f.setSize(100,100); f.setVisible(true); } } 3. Aufgabe // import java.lang.*; import java.io.*; import java.util.*; public class MaxTest { public static void main(String [ ] args) { BufferedReader ein = new BufferedReader( new InputStreamReader(System.in)); String eineZeile; StringTokenizer str; int x; int y; System.out.println( "Eingabe 2er ganzen Zahlen auf eine Zeile"); try { eineZeile = ein.readLine(); str = new StringTokenizer(eineZeile); if (str.countTokens() != 2) throw new NumberFormatException(); x = Integer.parseInt(str.nextToken()); y = Integer.parseInt(str.nextToken()); System.out.println("Max: " + Math.max(x,y)); } catch(Exception e) { System.err.println( "Fehler: Zwei Eingaben sind noetig!"); } } } 4. Aufgabe import java.io.*; public class Aufg4 { public static void listeDateien(String dateiName) 4 Programmieren in Java { FileReader dieDatei; BufferedReader dateiEin = null; String eineZeile; System.out.println("Datei: " + dateiName); try { dieDatei = new FileReader(dateiName); dateiEin = new BufferedReader(dieDatei); while ((eineZeile = dateiEin.readLine()) != null) System.out.println(eineZeile); } catch(Exception e) { System.out.println(e); } try { if (dateiEin != null) dateiEin.close(); } catch(Exception e) { System.out.println(e); } } public static void main(String [] args) { if (args.length == 0) System.out.println("Keine Dateinamen angegeben!"); for (int i = 0; i < args.length; i++) listeDateien(args[i]); } } 5. Aufgabe import java.awt.*; import java.util.*; public class Aufg5 extends Frame implements Runnable { Thread t; int x; public Aufg5() { x = 0; t = new Thread(this); t.start(); } public void paint(Graphics g) { g.drawString("Ein gutes, erfolgreiches neues Jahr",x,50); } public void run() { while (true) { try { if (x > getSize().width) x = 0; else x += 5; repaint(); t.sleep(100); } catch(InterruptedException e) 5 Programmieren in Java { t.stop(); } } } public static void main(String [] args) { Aufg5 a = new Aufg5(); a.setSize(300,100); a.setVisible(true); } } 6