Eclipse 2. Fenster per Buttonklick & Speicherfunktion etc

xyss

Aktives Mitglied
Moinmoin, ich habe zu meinem aktuellen Projekt noch einige kleine Fragen :bahnhof:

Vorweg: Ich arbeite mit dem Windowbuilder-Plugin, da ich selbst in Sachen GUIs absoluter Neuling bin.


1. Ich würde gerne ein Help-Fenster anlegen, mit einer Beschreibung des Programmes etc. Konkret will ich also, dass per Buttonklick ein neues Fenster geöffnet wird, welches durch einen Klick auf einen OK-Button in diesem neuen Fenster wieder geschlossen wird.

Folgende Fragen habe ich an dieser Stelle:
a) Wie genau stell ich das an, dass in Fenster 1 per Buttonklick Fenster 2 angezeigt wird? Fenster 2 bereits generieren, und es unsichtbar machen (falls es das in Java gibt) ?

b) Bei dem Hauptfenster ist die Close- Operation mit EXIT ON CLOSE definiert, wobei damit doch dann das ganze Programm beendet wird. Was müsste ich stattdessen nehmen, damit nur das Hilfe-Fenster wieder geschlossen wird?

c) Welches Java Objekt eignet sich am Besten für große Texte ? Textfields wären da ja wohl eher unpraktisch.

d) Ich habe mir überlegt, ein Inhaltsverzeichnis im Hilfe-Fenster anzulegen, so dass man per Klick auf eines der Elemente des Inhaltsverzeichnisses zu diesem Punkt im Hilfe-Fenster geleitet wird. Ist das in Java realisierbar? Wenn ja, wie? Die Fenstergröße ist NICHT resizeable, falls das relevant ist.


2. Ich würde gerne eine Speicher und Lade Funktion einbauen, welche Strings und integer-Werte in ein .txt Dokument speichert / lädt. Lohnt sich dafür ein ganz normaler Stream?


Liebe Grüße
 

VfL_Freak

Top Contributor
Moin,

a) Wie genau stell ich das an, dass in Fenster 1 per Buttonklick Fenster 2 angezeigt wird? Fenster 2 bereits generieren, und es unsichtbar machen (falls es das in Java gibt) ?
myFenster.setVisible( true );

b) Bei dem Hauptfenster ist die Close- Operation mit EXIT ON CLOSE definiert, wobei damit doch dann das ganze Programm beendet wird. Was müsste ich stattdessen nehmen, damit nur das Hilfe-Fenster wieder geschlossen wird?
myFenster.setVisible( false);
oder
myFenster.dispose();

c) Welches Java Objekt eignet sich am Besten für große Texte ? Textfields wären da ja wohl eher unpraktisch.
jTextArea ....

d) Ich habe mir überlegt, ein Inhaltsverzeichnis im Hilfe-Fenster anzulegen, so dass man per Klick auf eines der Elemente des Inhaltsverzeichnisses zu diesem Punkt im Hilfe-Fenster geleitet wird. Ist das in Java realisierbar? Wenn ja, wie? Die Fenstergröße ist NICHT resizeable, falls das relevant ist.
(1) Was meinst du denn mit "Inhaltsverzeichnis"? Inhalt von was?
(2) Scrollbars einfügen

Gruß
Klaus
 
Zuletzt bearbeitet:

xyss

Aktives Mitglied
Ich meinte damit ein Inhaltsverzeichnis des Hilfe-Fensters, da dies auch gleichzeitig eine Art Bedienungsanleitung sein soll. :)

Danke für die Antworten, ich werde es mal versuchen :)
 

xyss

Aktives Mitglied
Ich habe mich entschieden, für das Hilfe-Fenster ein JEditorPane zu benutzen, da dieses scheinbar auch html unterstützt.

Edit: hat sich geklärt.
 
Zuletzt bearbeitet:

xyss

Aktives Mitglied
Das hat zwar jetzt nichts mit der oben genannten Frage zu tun:

Wenn ich meine Programme an Freunde oder ähnliches schicke (manchmal sogar, wenn es nur extrem banale Programme sind) werden diese von deren Betriebssystem als "eventuell gefährlich" oder ähnliches eingestuft, bzw so manche Anti-Virus Software schlägt auch Alarm, und behauptet, es sei ein Virus.
Woran liegt das?
 

xyss

Aktives Mitglied
Alles klar!

Nun kam mir eine neue Frage auf.

Ich habe mein Programm nun mehr oder weniger fertig gestellt, und es mittels Excelsior JET zu einer .Exe konvertiert.

Der SaveDialog nimmt als Startverzeichnis das Verzeichnis, in dem sich die Exe befindet. Auf meinem PC funktioniert das Speichern wunderbar, ob ich es aus Eclipse, .jar oder mit der .exe mache.
Auf dem PC meiner Freundin jedoch funktioniert das Speichern nicht so wirklich. Bei erfolgreichem Abspeichern kommt die Message "Speichern erfolgreich". Die kommt bei ihr auch, jedoch ohne dass eine .txt Datei erstellt wurde. Auf dem Desktop abspeichern funktioniert bei ihr jedoch auch. (in dem Verzeichnis, in welchem das Programm installiert wurde jedoch nicht.)
Scheint zwar kein Java-Fehler zu sein, aber woran kann das liegen?


Edit:
Bei ihr hatte ich versucht, die Dateien im Ordner Program Files (x86) abzulegen, dort, und in allen Unter-Verzeichnissen davon, ging es nicht.
Ich habe das gleiche nun mal bei mir versucht (mein Start-Verzeichnis war auf einer separaten Festplatte), und siehe da, auch bei mir speichert er im x86 nicht ab! Woran kann das liegen?
 
Zuletzt bearbeitet:

xyss

Aktives Mitglied
Noch was zu meinem vorigen Post:

Das Speichern funktioniert auf der C: Festplatte ausschließlich in Unter-Verzeichnissen meines Benutzer-Verzeichnisses (bzw bei dem PC meiner Freundin in den Unter-Verzeichnissen ihres Benutzer-Verzeichnisses). Auf meiner Data-Festplatte D: kann man ganz nach belieben Speichern, aber auf allem in C:, was nicht zu meinem Benutzer gehört (wie z.B. Program Files, Program Files (x86) ) wird nicht gespeichert.

Liegt vielleicht in der Speicher-Methode der Fehler?
Hier die Methode, welche das Speichern durchführt:

Java:
public void speichernAlsTxt(String filename, String Notizen) {
        
        BufferedWriter bufferedWriter = null;
        
        try {
            
            
            bufferedWriter = new BufferedWriter(new FileWriter(filename));
            
            String[] s = convToString(Notizen);
           

            bufferedWriter.write("Notizen: ");
            bufferedWriter.newLine();
            //Die Notizen sind immer mind. 21 Zeilen lang, da in den Notizen Werte für 21 Variablen eingetragen sind.
            for (int i = 0; i <= 20; i++){
            	bufferedWriter.write(s[i]);
            	bufferedWriter.newLine();
            }
            
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedWriter != null) {
                    bufferedWriter.flush();
                    bufferedWriter.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

Das Speichern funktioniert auf der C: Festplatte ausschließlich in Unter-Verzeichnissen meines Benutzer-Verzeichnisses (bzw bei dem PC meiner Freundin in den Unter-Verzeichnissen ihres Benutzer-Verzeichnisses). Auf meiner Data-Festplatte D: kann man ganz nach belieben Speichern, aber auf allem in C:, was nicht zu meinem Benutzer gehört (wie z.B. Program Files, Program Files (x86) ) wird nicht gespeichert.

Liegt vielleicht in der Speicher-Methode der Fehler?
hmm, so ganz habe ich deine Ausführung nicht verstanden ....
Was genau übergibst Du denn mit "filename" ???:L

Gruß
Klaus
 

xyss

Aktives Mitglied
Der String fileName, der übergeben wird, ist der Pfad der davor in einem SaveDialog ermittelt wird.
Der Pfad ist jedenfalls korrekt, das habe ich einfach dadurch geprüft, dass ich mir den Pfad per System.out.println ausgeben gelassen habe :)

also kurz: fileName = Dateipfad

Edit:
Okay.. entweder habe ich das davor übersehen, oder das wurde mir bisher nicht angezeigt. Jedenfalls hat mir die Konsole gerade eben das hier rausgespuckt:

java.io.FileNotFoundException: C:\Program Files (x86)\test.txt (Zugriff verweigert)
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
hmm, KEIN Dateiname ?? ;)

Und warum willst Du einen Text nach "Program Files" speichern ?
Wie sähe in den Fall Deine Pfad aus?
Aber in jedem anderen Verzeichnis auf C: kannst Du speichern?

Ich erinnere mich dunkel, dass es da bei Win7 gewisse Probleme mit diesem Pfad geben kann - bedingt durch mal englische und deutsche Schreibweise (Programme vs. Program Files) !

Gruß
Klaus
 

xyss

Aktives Mitglied
als fileName wird der gesamte Dateipfad übergeben, und sofern ich irgendwo in D: oder in C:/Benutzer/MeinBenutzerName speicheren will, klappt das auch einwandfrei. Ich kann also in jedem Verzeichnis in C speichern, welches NACH "C:/Benutzer/MeinBenutzerName" kommt. In D: (Data Festplatte) kann ich überall speichern.

Zum Beispiel wird als fileName: "D:\workspace\Test.txt" übergeben, dadurch wird dann im Verzeichnis workspace auch die Datei Test.txt angelegt und abgespeichert.

In Program-Files x86 wollte ich speichern, da eben dorthin das Programm installiert wurde (da ich mithilfe von Excelsior JET eine .exe mit Installations-Setup erstellt habe) und es ein wenig.. nunja.. blöd ist, wenn man nicht einmal in dem Ordner speichern kann, in dem sich das Programm selbst befindet.


So sehen die fileNames aus, wenn es nicht funktioniert:

C:\Program Files (x86)\test.txt
C:\test.txt
C:\Program Files\test.txt

überall mit der Fehlermeldung:
java.io.FileNotFoundException: C:\Program Files\test.txt (Zugriff verweigert)
(je nachdem natürlich mit anderem Pfad)
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

So sehen die fileNames aus, wenn es nicht funktioniert:

C:\Program Files (x86)\test.txt
C:\test.txt
C:\Program Files\test.txt

überall mit der Fehlermeldung: java.io.FileNotFoundException: C:\Program Files\test.txt (Zugriff verweigert)
Zwei Ideen:
(a) versuche es mal mit C:\Programme\test.txt (siehe auch mein vorherigen Post)
(b) "(Zugriff verweigert)" könnte auf ein Rechte-Problem hinweisen. Vermutlich 'darf' Deine Software dort nicht schreiben(zumindest nicht ohne Admin-Rechte)!

Gruß
Klaus
 

xyss

Aktives Mitglied
(b) wars! Wenn ich das Programm als Administrator ausführe, klappt es.
Gibt es eine möglichkeit, im Programmcode festzulegen, dass es automatisch als Administrator ausgeführt werden muss?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JAnruVA Eclipse Design Fenster anders als das ausgeführte IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
H Outline Fenster (Gliederung) wird mit deutschem Sprachpaket nicht angezeigt, Eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
S Eclipse Methoden Fenster anzeigen lassen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
it_is_all NetBeans EasyUML - mache alles nach Plan, kein Fenster erscheint :( IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
O Eclipse Consolenanwendung in CMD Fenster ausführen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
S Eclipse Juno - Fenster mit unvollständigem Rahmen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
B IDEA IntelliJ Programmausgabe im Windows DOS Fenster IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
S JFreeChart Diagramm in GUI, nicht in neuem Fenster anzeigen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
J Jemand ne Ahnung warum meine Java Fenster immer schwarz werden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
N NetBeans JFrame - Arrayausgabe im Fenster mit Scrollbar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
G NetBeans Projects-Fenster versehentlich geschlossen! Wie komme ich da wieder ran? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
B Eclipse import java. dann kommt kein Fenster IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
reibi Eclipse Eclipse - Leeres Fenster beim Wechsel der Perspektive IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
J Eclipse 3.2: kompiliert nicht das aktuell im Fenster geöffnete IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
O Eclipse startet aber nur ein kleines graues Fenster IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
P NetBeans API- Fenster IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
F Commandline Fenster per exec. jar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
J Fenster öffnen per Button klick erstellt mit Visual Class IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2

Ähnliche Java Themen


Oben