Moin!
Hab von meinem Prof folgende Aufgabe zum ersten Kontakt mit den control-Komponenten bekommen :meld: :
Hab das Ding dann auch realisiert. Aber bekannter Weise führen ja viele Wege nach Rom. Und ich bin mir nicht sicher, ob ich den besten gewählt hab
Wäre nett, wenn sich das ma jemand angucken könnte. Besonders mit der Benutzung der inneren Klassen hatte ich so meine Probleme. Außerdem frag ich mich, ob man da nich was vereinfachen kann. Die Methode zeigen() kommt ja drei Mal vor und die innere Klasse WAdapter auch. Das riecht für mich förmlich nach ner Möglichkeit einer Vereinfachung. Ich weiß nur leider nich wie. Bin noch blutiger Anfänger :bahnhof: Desweiteren hab ich immer so meine Probleme mit diesen Modifiern (heißen die so?). Also ich meine z.B. public, private etc. Also wäre echt nett, wenn sich jemand die Mühe macht, das Prog ma durchzuchecken, um mich danach in Grund und Boden zu kritisieren :autsch: .
Hier der komplette Code (Das Verzeichnis "foo" muss sich im selben Verzeichnis befinden, wie die Class-Dateien):
Hab von meinem Prof folgende Aufgabe zum ersten Kontakt mit den control-Komponenten bekommen :meld: :
Legen Sie auf Ihrem Rechner ein Verzeichnis foo an, in das Sie ein paar kleine Dateien kopieren.
Schreiben Sie nun eine Java-Applikation, die die Namen der in foo enthaltenen Dateien ermittelt und auf drei verschiedene Arten jeweils in einem eigenen Fester ausgibt:
1. als Einträge einer Checkbox,
2. als Einträge eines PullDown-Menüs und
3. als Einträge einer Auswahlliste.
Entwerfen Sie dabei für jedes der drei Ausgabefenster eine innere Klasse, die jeweils die Klasse Frame erweitert. Beschriften Sie die Ausgabefenster.
Hab das Ding dann auch realisiert. Aber bekannter Weise führen ja viele Wege nach Rom. Und ich bin mir nicht sicher, ob ich den besten gewählt hab
Wäre nett, wenn sich das ma jemand angucken könnte. Besonders mit der Benutzung der inneren Klassen hatte ich so meine Probleme. Außerdem frag ich mich, ob man da nich was vereinfachen kann. Die Methode zeigen() kommt ja drei Mal vor und die innere Klasse WAdapter auch. Das riecht für mich förmlich nach ner Möglichkeit einer Vereinfachung. Ich weiß nur leider nich wie. Bin noch blutiger Anfänger :bahnhof: Desweiteren hab ich immer so meine Probleme mit diesen Modifiern (heißen die so?). Also ich meine z.B. public, private etc. Also wäre echt nett, wenn sich jemand die Mühe macht, das Prog ma durchzuchecken, um mich danach in Grund und Boden zu kritisieren :autsch: .
Hier der komplette Code (Das Verzeichnis "foo" muss sich im selben Verzeichnis befinden, wie die Class-Dateien):
Code:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Widgets {
public static File[] files;
public static void main(String[] args) {
File directory = new File("foo");
if (!directory.exists()) {
System.out.println("Das Verzeichnis " + directory.getName()
+ " existiert nicht!");
}
else {
if (directory.isDirectory()) {
files = directory.listFiles();
if (files.length == 0) {
System.out.println("Das Verzeichnis " + directory.getName()
+ " enthaelt keine Dateien!");
}
else {
try {
Checkb checkbox = new Checkb();
PullDown pDown = new PullDown();
Liste list = new Liste();
checkbox.addCheckbox();
pDown.addPullDown();
list.addList();
checkbox.zeigen();
pDown.zeigen();
list.zeigen();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
else {
System.out.println(directory.getName()
+ " ist kein Verzeichnis!");
}
}
}
private static class Checkb extends Frame {
class WAdapter extends WindowAdapter {
public void windowClosing( WindowEvent e ) {
setVisible(false);
dispose();
}
}
public Checkb() {
Frame f = new Frame();
this.setTitle(" Checkbox ");
this.setSize(225, 225);
this.setLocation(30, 50);
this.setVisible(true);
this.setResizable(false);
this.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 20));
WAdapter wa = new WAdapter();
addWindowListener(wa);
}
public void addCheckbox() {
for (int i = 0; i < files.length; i++) {
this.add(new Checkbox(files[i].getName()));
}
}
public void zeigen() {
this.show();
}
}
public static class PullDown extends Frame {
class WAdapter extends WindowAdapter {
public void windowClosing( WindowEvent e ) {
setVisible(false);
dispose();
}
}
Choice ch = new Choice();
public PullDown() {
Frame f = new Frame();
this.setTitle(" PullDown-Menü ");
this.setSize(225, 225);
this.setLocation(300, 50);
this.setVisible(true);
this.setResizable(false);
this.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 20));
WAdapter wa = new WAdapter();
addWindowListener(wa);
}
public void addPullDown() {
for (int i = 0; i < files.length; i++) {
ch.add(" " + files[i].getName() + " ");
}
this.add(ch);
}
public void zeigen() {
this.show();
}
}
public static class Liste extends Frame {
class WAdapter extends WindowAdapter {
public void windowClosing( WindowEvent e ) {
setVisible(false);
dispose();
}
}
List li = new List(4, true);
public Liste() {
Frame f = new Frame();
this.setTitle(" Auswahlliste ");
this.setSize(225, 225);
this.setLocation(570, 50);
this.setVisible(true);
this.setResizable(false);
this.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 20));
WAdapter wa = new WAdapter();
addWindowListener(wa);
}
public void addList() {
for (int i = 0; i < files.length; i++) {
li.add(" " + files[i].getName() + " ");
}
this.add(li);
}
public void zeigen() {
this.show();
}
}
}