Layout + Inhalt einer JTable speichern

MorassoHD

Mitglied
Hallo,

(ich hoffe ich poste das im richtigen Forum, denn ich habe mich gerade hier regestriert)
ich habe ein Problem und zwar möchte ich den Inhalt meiner JTable speichern.
Das Layout und der Inhalt sollen natürlich in der gespeicherten Datei vorhanden sien.
Ich scheitere beim JFileChooser.
Mein schönes Programmchien dient als Bericht Manager.
Zu jedem tag nur Stichpunkte.


Hier mein code:
Java:
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.TableColumn;

public class PraktikumsberichtManager extends JFrame implements ActionListener{
   
   
    JTable table1;
    JScrollPane s;
    JMenuItem item1;

    public PraktikumsberichtManager(){
       
        String[] columnNames = {"Tag",
                "Datum",
                "Aufgaben / was getan wurde"};
       
        Object[][] data = {
               {"Montag","3.10.16",""},
               {"Dinstag","4.10.16",""},
               {"Mitwoch","5.10.16",""},
               {"Donerstag","6.10.16",""},
               {"Freitag","7.10.16",""},
               {"Montag","10.10.16",""},
               {"Dintsag","11.10.16",""},
               {"Mitwoch","12.10.16",""},
               {"Donserstag","13.10.16",""},
               {"Freitag","14.10.16",""}};
       
    table1 = new JTable(data, columnNames);
    table1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);   
   
    final int INDEX_COLUMN1 = 0;
    TableColumn col = table1.getColumnModel().getColumn(INDEX_COLUMN1);
    col.setPreferredWidth(80);
    final int INDEX_COLUMN2 = 1;
    TableColumn col2 = table1.getColumnModel().getColumn(INDEX_COLUMN2);
    col2.setPreferredWidth(65);
    final int INDEX_COLUMN3 = 2;
    TableColumn col3 = table1.getColumnModel().getColumn(INDEX_COLUMN3);
    col3.setPreferredWidth(305);
   
    s = new JScrollPane(table1);
   
    JMenuBar JMB = new JMenuBar();   
    JMenu JM1 = new  JMenu("menu");
   
    item1 = new JMenuItem("Speichern");
    item1.addActionListener(this);
   
    JMB.add(JM1);
    JM1.add(item1);
   
    JPanel panel = new JPanel();
    panel.add(s);
   
    this.setJMenuBar(JMB);
    this.setTitle("Praktikumsberichtmanager");   
    this.setVisible(true);
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    this.setSize(480,280);
    this.add(panel);
       
       
    }

    public static void main(String[] args) {

        new PraktikumsberichtManager();
    }
   
    public void actionPerformed(ActionEvent e) {
       
        if (e.getSource() == item1) {
            JFileChooser fchooser = new JFileChooser();

            fchooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            fchooser.setMultiSelectionEnabled(false);

            int returnVal = fchooser.showSaveDialog(fchooser);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                try {
                    File file = fchooser.getSelectedFile();
                    FileWriter fWriter = new FileWriter(file.getAbsolutePath(), true);

                    table1.write(fWriter);

                    fWriter.close();

                } catch (IOException grummel) {
                    System.err.println("error");
                }

            }
}
    }
}
 
Zuletzt bearbeitet:

MorassoHD

Mitglied
Nach: Inhalt und Layout einer JTable speichern.
Und anderen Formulierungen.
Ich habe schon endliche seiten durchsucht und andere Foren haben mir auch nicht weitergeholfen :(

Um die serialisierung also Text Größe ändern und Farbe wollte ich mich jetzt kömmern
 

MorassoHD

Mitglied
Wo hängt es denn genau? Bzw was klappt denn nicht so wie du es willst?
also der JFileChooser soll ja die tabelle speichern. ich möchte das verzeichniss auswählen.
nur beim drücken auf Speichern wird dieser nicht ausgeführt. (Aktionzeugs sind ja schon da).
Java:
public void actionPerformed(ActionEvent e) {
   
  if (e.getSource() == item1) {
  JFileChooser fchooser = new JFileChooser();

  fchooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  fchooser.setMultiSelectionEnabled(false);

  int returnVal = fchooser.showSaveDialog(fchooser);
  if (returnVal == JFileChooser.APPROVE_OPTION) {
  try {
  File file = fchooser.getSelectedFile();
  FileWriter fWriter = new FileWriter(file.getAbsolutePath(), true);

  table1.write(fWriter);

  fWriter.close();

  } catch (IOException grummel) {
  System.err.println("error");
  }

wass muss da rein?
 
Zuletzt bearbeitet von einem Moderator:

Robat

Top Contributor
Ich weiß nicht ob das sofort dein Problem beheben wird, aber:

Java:
File file = fchooser.getSelectedFile();
FileWriter fWriter = new FileWriter(file.getAbsolutePath(), true);

Änder das mal ab in:

Java:
FileWrite fWrite = new FileWriter(fChooser.getSelectedFile() + ".txt", true); // Wobei ich nicht weiß, wofür du das true setzt?


Du brauchst die Instanz nicht wirklich.
Das die Fileerweiterung änderst du natürlich in deine ab - also .txt, .bin, .doc - what ever.

Die Erweiterung musst du aber immer angeben :)



EDIT: Gibt es denn eine Fehlermeldung?
 
Zuletzt bearbeitet von einem Moderator:

Robat

Top Contributor
Vfl_Freak,

was er damit sagen will ist, dass der Code in actionPeformed scheinbar nicht funktioniert.
Das was bezieht sich also auf: Wo ist der Fehler :D
 

Thallius

Top Contributor
Ich glaube eher er denkt es gibt eine Methode saveJTable() die einfach alles speichert was in seiner Tabelle steht und es am besten gleich noch richtig formatiert....
 

Robat

Top Contributor
Java:
table1.write(fWriter);

berichtigt mich aber sollte es nicht
Java:
fWrite.write(table1)

sein?

du willst ja mittels FileWriter was schreiben und nicht mittels table1
 

Harry Kane

Top Contributor
Da eine JTable keine Methode write hat, ist table1.write(fWriter) schonmal Käse.
Eine FileWriter hat zwar mehrere write-methoden, keine hat aber eine JTable als Parameter.
Ansonsten verweise ich auf meinen ersten Post.
Und wenn es XML sein muss: XMLEncoder
 
Zuletzt bearbeitet:

MorassoHD

Mitglied
Ich werde das nun anders machen:
und zwar werde ich für jeden tag ein extra fersten machen wo man dann alles eintragen kann.

Eine andere Möglichkeit wäre, das dass JTable beim schließen den Inhalt behält und beim öffnen wieder anzeigt. Also ohne einer speichern und laden Funktion. das währe vielleicht nicht so kompliziert. ich habe in Texteditor programmiert und da habe ich es so hinbekommen (also mit dem Speichen).
Das hat Prima funktioniert ist aber auch eine andere Geschichte.
 

VfL_Freak

Top Contributor

MorassoHD

Mitglied
was soll das denn sein ??
Also ich möche ein main Fenster, in dem für jeder tag ein button ist.
Wenn man auf den butten für z.B. den ersten tag also "Tag 1" dann öffnet sich ein fenster welces eine Tabelle anzeigt mit drei spalten und einer Zeile. (das ist jetzt meine neue Idee) wäre das komplizierter?

Also...
Die Tabelle für z.B. Tag 1, soll den Inhalt speichern, wenn ich das Fenster schleiße.
(das Main Fenster bleibt immer offen)
Also der Inhalt soll immer gespeichert werden.
z.B. für jeden tag eine Datei (Speicheort erstmal egal oder sagen wir auf dem Desktop)
Das Programm speichert nur nicht wenn es abstürzt (oder der PC) was ja auch logisch ist.

Wäre diese Methode besser oder alles in einer Tabelle?
 

VfL_Freak

Top Contributor
Moin,
Also ich möche ein main Fenster, in dem für jeder tag ein button ist.
Wenn man auf den butten für z.B. den ersten tag also "Tag 1" dann öffnet sich ein fenster welces eine Tabelle anzeigt mit drei spalten und einer Zeile. (das ist jetzt meine neue Idee) wäre das komplizierter?
Lies Dich mal hier ein: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

Die Tabelle für z.B. Tag 1, soll den Inhalt speichern, wenn ich das Fenster schleiße.
(das Main Fenster bleibt immer offen) Also der Inhalt soll immer gespeichert werden.
z.B. für jeden tag eine Datei (Speicheort erstmal egal oder sagen wir auf dem Desktop)
Das Programm speichert nur nicht wenn es abstürzt (oder der PC) was ja auch logisch ist.
Sicher ist sowas machbar ... wenn Du den Tabelleninhalt in eine Textdatei speichern willst, dann mach es (IMHO wäre hier eine Datenbank deutlich sinnvoller)
Dann poste mal Deinen Ansatz und stell' konkrete Fragen dazu (fertigen Code wirst Du allenfalls hier bekommen: http://www.java-forum.org/forum/private-stellangebote-und-stellensuche-von-usern.97/)


Wäre diese Methode besser oder alles in einer Tabelle?
das kommt darauf an ... :rolleyes:

Gruß Klaus
 

MorassoHD

Mitglied
Ich hätte noch de frage...
ich möchte das das Mainfenster unsichtbar haben solange ein anderes Fenster offen ist also ich drücke auf ein Button und dieser setzt den boolesch auf false und wenn das andere Fenster geschlossen wird wird dieser auf true gesetzt. Das mainfenster wird wieder sichtbar. wie setze ich das um?
Muss ich eine neue class machen?
 

VfL_Freak

Top Contributor
Moin,
ich möchte das das Mainfenster unsichtbar haben solange ein anderes Fenster offen ist also ich drücke auf ein Button und dieser setzt den boolesch auf false und wenn das andere Fenster geschlossen wird wird dieser auf true gesetzt. Das mainfenster wird wieder sichtbar. wie setze ich das um?
Muss ich eine neue class machen?
Ohne Dir zu nahe treten zu wollen - es ist leider sehr schwer Deine Texte zu lesen und vor allem zu verstehen !!

Meinst Du sowas?
Du klickst auf einen Button im Mainfenster, daraufhin soll dies solange nicht mehr sichtbar sein, bis das den den Klick aufgehende fenster wieder geschlossen wird??
Dafür bräuchtest Du nicht mal 'nen boolschen Wert!
Die Sichtbarkeit kannst Du ja mit der Methode setVisible([true|false]) regeln!

Ich weiß nun nicht, wie dein entsprechender Code ausschaut, aber sobald Du also den Button anklickst wirst Du ja vermutlich eine zugehörige actionPerformed-Methode ansprechen, oder? Dann setz' dort das MainFenster auf visible(false) und anschließend wieder auf visible(true)!
Dafür sollte das aufpoppende Fenster idealerweise modal sein !

Gruß Klaus
 

MorassoHD

Mitglied
Ohne Dir zu nahe treten zu wollen - es ist leider sehr schwer Deine Texte zu lesen und vor allem zu verstehen !!
Tut mir leid. :(
Ich versuch es nochmal:
Das MainFenster hat 10 Buttons für jeden tag einen.
Wenn ich auf den Button "Tag 1" drücke, öffnet sich ein weiteres Fenster.
Nun soll das MainFenster visible(false) also nicht sichtbar sein, denn man könnte immer mehr Fenster öffnen. Jetzt sieht man nurnoch das Fenster für den ersten tag.
In dem fenster gibt es ein button, welcher dich zurück zum MainFenster bringt. Also das fenster für Tag 1 schließt sich:
Java:
if (e.getSource() == BackToMenu) { // BackToMenu heißt der Button
                    dispose();
                    PraktikumsberichtManager.visiblel(true); // das soll das mainfenster wieder sichtbar machen
}



Hier der code vom MainFenster:
WARNUNG: Das MainFenster lässt sich nicht so einfach schließen und rückt immer in den Vordergrund wegen der while schleife ganz unten! Dafür habe ich einen BugExit Button eingebaut welcher oben links im MainFenster ist.
Beim aufprobieren musst du das Paket "Manager" nennen. (oder du änderst das einfach)
Java:
package manager;

import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.TableColumn;

public class PraktikumsberichtManager extends JFrame implements ActionListener{
  
    public static boolean visiblel(boolean b){

        return b;
    }
  
    JButton Bugexit;
    JButton Tag1b;
    JButton Tag2b;
    JButton Tag3b;
    JButton Tag4b;
    JButton Tag5b;
    JButton Tag6b;
    JButton Tag7b;
    JButton Tag8b;
    JButton Tag9b;
    JButton Tag10b;
    JPanel panel;
    JLabel label1;
    JLabel label2;
    JPanel panelTag1;
    JPanel panelTag2;
    JPanel panelTag3;
    static boolean visibe  = visiblel(true) ;
    public PraktikumsberichtManager(){
              
        panel = new JPanel();
        panel.setLayout(null);
      
        label1 = new JLabel ("1. Woche");
        label1.setBounds(20 , 60 , 80 , 50);
      
        label2 = new JLabel ("2. Woche");
        label2.setBounds(160 , 60 , 80 , 50);
      
        Bugexit = new JButton ("bugexit");
        Bugexit.setBounds(20, 10 , 80 , 40);
        Bugexit.addActionListener(this);
      
        Tag1b = new JButton ("Tag 1");
        Tag1b.setBounds(20 , 100 , 80 , 45);
        Tag1b.addActionListener(this);
      
        Tag2b = new JButton ("Tag 2");
        Tag2b.setBounds(20 , 150 , 80 , 45);
        Tag2b.addActionListener(this);
      
        Tag3b = new JButton ("Tag 3");
        Tag3b.setBounds(20 , 200 , 80 , 45);
        Tag3b.addActionListener(this);
      
        Tag4b = new JButton ("Tag 4");
        Tag4b.setBounds(20 , 250 , 80 , 45);
        Tag4b.addActionListener(this);
      
        Tag5b = new JButton ("Tag 5");
        Tag5b.setBounds(20 , 300 , 80 , 45);
        Tag5b.addActionListener(this);
      
        Tag6b = new JButton ("Tag 6");
        Tag6b.setBounds(160 , 100 , 80 , 45);
        Tag6b.addActionListener(this);
      
        Tag7b = new JButton ("Tag 7");
        Tag7b.setBounds(160 , 150 , 80 , 45);
        Tag7b.addActionListener(this);
      
        Tag8b = new JButton ("Tag 8");
        Tag8b.setBounds(160 , 200 , 80 , 45);
        Tag8b.addActionListener(this);
      
        Tag9b = new JButton ("Tag 9");
        Tag9b.setBounds(160 , 250 , 80 , 45);
        Tag9b.addActionListener(this);
      
        Tag10b = new JButton ("Tag 10");
        Tag10b.setBounds(160 , 300 , 80 , 45);
        Tag10b.addActionListener(this);
      
      
        panel.add(Bugexit);
        panel.add(Tag1b);
        panel.add(Tag2b);
        panel.add(Tag3b);
        panel.add(Tag4b);
        panel.add(Tag5b);
        panel.add(Tag6b);
        panel.add(Tag7b);
        panel.add(Tag8b);
        panel.add(Tag9b);
        panel.add(Tag10b);
        panel.add(label1);
        panel.add(label2);
        this.setTitle("Hauptmenue");
        this.setSize(300, 400);
        this.add(panel);
    }

    public void actionPerformed(ActionEvent a) {
            if(a.getSource() == Tag1b){
                new Tag1();
                visiblel(false);
            }
          
//            if (a.getSource() == Tag2b){
//                new Tag2();
//            }
//            if (a.getSource() == Tag3b){
//                new Tag3();
//            }
//            if (a.getSource() == Tag4b){
//                new Tag4();
//            }
//            if (a.getSource() == Tag5b){
//                new Tag5();
//            }
//            if (a.getSource() == Tag6b){
//                new Tag6();
//            }
//            if (a.getSource() == Tag7b){
//                new Tag7();
//            }
//            if (a.getSource() == Tag8b){
//                new Tag8();
//            }
//            if (a.getSource() == Tag9b){
//                new Tag9();
//            }
//            if (a.getSource() == Tag10b){
//                new Tag10();
//            }
            if (a.getSource() == Bugexit){
                System.exit(0);
            }
          
          
    }

      
    public static void main (String[] args){
      
      
        PraktikumsberichtManager s =  new PraktikumsberichtManager();
        while(true){
        if (visibe == true){
                s.setVisible(true);
              
            }else{
                s.setVisible(false);
              
            }
        }
      
    }
}

und hier der Code für den 1. Tag (dürfte zum ausprobieren ausreichen):
Java:
package manager;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.TableColumn;

public class Tag1 extends JFrame implements ActionListener{

    JPanel panel;
    JButton BackToMenu;
    JTextArea TAbericht;
    JTextArea tag;
    JTextArea datum;
    JMenuBar mbar;
    JMenu menu1;
    JMenuItem Speichern;
    JMenuItem Laden;
    JLabel LTag;
    JLabel LDatum;
    JScrollPane scroll;
    JMenu menu2;
  
    public Tag1(){
      
        mbar = new JMenuBar();
        menu1 = new JMenu("menu");
        Speichern = new JMenuItem("Speichern");
        Speichern.addActionListener(this);
        Laden = new JMenuItem("Laden");
        Laden.addActionListener(this);
        TAbericht = new JTextArea();
        TAbericht.setBounds(5 , 60 , 470 , 365);
        panel = new JPanel();
        panel.setLayout(null);
        BackToMenu = new JButton("zum Hauptmenu");
        BackToMenu.setBounds( 350 , 0 , 125, 50);
        BackToMenu.addActionListener(this);
        tag = new JTextArea();
        tag.setBounds(125 , 10 , 65 , 20);
        datum = new JTextArea();
        datum.setBounds(250 , 10 , 65 , 20);
        LTag = new JLabel ("Tag:");
        LTag.setBounds(95 , 10 , 50 , 20);
        LDatum = new JLabel ("Datum:");
        LDatum.setBounds(205 , 10 , 50 , 20);
      
        menu1.add(Speichern);
        menu1.add(Laden);
        mbar.add(menu1);
        panel.add(datum);
        panel.add(tag);
        panel.add(BackToMenu);
        panel.add(TAbericht);
        panel.add(LTag);
        panel.add(LDatum);
        this.setJMenuBar(mbar);
        this.setTitle("Tag 1");
        this.setSize(500,500);
        this.setVisible(true);
        this.add(panel);
    }
          
    public static void main(String[] args) {
                new Tag1();
            }
    public void actionPerformed(ActionEvent e) {
                if (e.getSource() == Speichern) {
                    JFileChooser fchooser = new JFileChooser();
                    fchooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
                    fchooser.setMultiSelectionEnabled(false);
                    int returnVal = fchooser.showSaveDialog(fchooser);
                    if (returnVal == JFileChooser.APPROVE_OPTION) {
                        try {
                            File file = fchooser.getSelectedFile();
                            FileWriter fWriter = new FileWriter(file.getAbsolutePath(), true);
                            TAbericht.write(fWriter);
                            fWriter.close();
                        } catch (IOException grummel) {
                            System.err.println("fehler");
                        }
                    }
                }
              
                if (e.getSource() == BackToMenu) {
                    dispose(); // hier muss dan hin das has Hauptfenster wieder sichtbar wird

                }
              
            }
}
Ja, und die Formatierung ist nicht die Beste.
 

VfL_Freak

Top Contributor
Moin,

Ausprobieren werde ich DEN Code mit Sicherheit nicht!!
Aber mal einige Anmerkungen, die mir so aufgefallen sind!!

if(e.getSource() == BackToMenu) // BackToMenu heißt der Button
{
dispose();
PraktikumsberichtManager.visiblel(true); // das soll das mainfenster wieder sichtbar machen
}
(a) Was macht denn die Funktion dispose() ?? :rolleyes:
(b) Eigene Methode möglichst NIE so wie vorhandene Methoden benennen!! irgendwann kommst Du garaniert durcheinander !!
(c) Was soll denn Deiner Meinung nach das visiblel(true) bewirken?? :eek:
Du übergibst einen bool'schen Wert, der aber von der Methode visiblel (ganz mieser Name im Übrigen) lediglich zurückgegeben würde, so Du ihn denn abfragen würdest, was Du aber nicht tust!
Und folgendes wäre ebenfalls ziemlich sinnfrei :
Java:
boolean myValue = PraktikumsberichtManager.visiblel(true);
Hierdurch würde lediglich myValue auf den Übergabewert true gesetzt ....

Du musst schon was wie
Java:
Tag1.setVisible( true );
machen, um Tag1 sichtbar zu machen!

Dann
public static boolean visiblel(boolean b)
{
return b;
}
Wie gesagt, diese Methode ist ziemlich sinnfrei!
Sie würde lediglich den an sie übergeben Wert zurückgeben - gesetzt den Fall, er würde auch abgefragt!!
Bei Deinem Aufruf "visiblel(false);" weiter unten passiert genau gar nix !!

Ähnlich gilt für Deine main-Methode!!
Java:
public static void main( String[] args )
{
    PraktikumsberichtManager s =  new PraktikumsberichtManager();
    while( true )
    {
        if( visibe == true )  // soll hier 'visibe' sein ???
        {
            s.setVisible( true );  // ein solcher Aufruf wäre grundlegend korrekt (siehe oben)!
        }
        else
        {
              s.setVisible(false);  // ein solcher Aufruf wäre grundlegend korrekt (siehe oben)!
        }
    }
}
Nur: Du hast hier eine böse Endlosschleife, da die Schleifenbedingung ja nie FALSE werden kann!

Sein mir bitte nicht böse, aber Du solltest Dich wirklich erstmal mit einem Grundlagenbuch zu Java beschäftigen und nicht gleich wild mit GUIs loslegen !! ;)
Gruß Klaus
 

Robat

Top Contributor
@VfL_Freak: Wieso nimmst du mir immer die Worte aus dem Mund? :D

Ich bin da übrigens ganz seiner Meinung. Ich verstehe sowieso nicht ganz warum es die Methode visiblel() gibt. Du hast ja schon eine vordefinierte Methode setVisible.

Funktioniert denn dein Code so wie er soll?

Auch an dich meine Predigt die ich jeden gebe:
Guckt euch gewisse Java-Konventionen an wie zB:
-Variablennamen, Methodennamen, Namensgebung im allgemeinen
- Trennung von Logik und gui (mvc)
- es wird zu wenig kommentiert - in einem Jahr Weißt du nicht mehr was du da gemacht hast ;)

Grüße
Robert
 

MorassoHD

Mitglied
ich möchte nicht tag 1 sichtbar machen sondern das mainfenster unsichtbar, solange ich das tag1 Fenster nicht über den Button "zum hauptmenue" geschlossen wird.
Das sieht so scheiße aus weil ich nicht weiß wie ich das machen soll. deshalb frage ich euch.
Habe ich meine zeit hier verschwendet? Ich dachte, das Forum ist da um nach Hilfe zu fragen und das man sich Vorschläge von anderen holen kann. Oder ist das Forum dazu da, gesagt zu bekommen was ich lesen soll? Ich hab nicht danach gefragt.

Ich wollte wissen was ich ändern muss oder wie es geht.
Ich dachte ihr könnt mir das richtig zeigen, damit ich das Lerne.

Danke für eure Bemühungen. :(
 

VfL_Freak

Top Contributor
Nochmal:
hier hat niemand ein Problem damit, Dir auf konkrete Fragen zu antworten oder Dich hier und da auf den richtigen Weg zu schubsen!
Aber wir haben hier schnell gemerkt, dass Dir die meisten Grundlagen fehlen, um eine GUI zu programmieren!!

Aber eine komplette Einführung in das Thema kann und will hier niemand leisten!
Zumal wir auch nicht seriös einschätzen können, welchen Kenntnisstand Du nun wirklich hast!!
Deswegen der Hinweis, Dich erstmal mit grundlagen zu beschäftigen und nicht sofort mit relativ komplexen GUIs anzufangen!

Gruß Klaus
 

Robat

Top Contributor
Eigentlich müsste es so funktionieren:

Wenn du FirstDayFrame aufrufst, übergibst du einfach eine Instanze von deinem MainFrame als Parameter in den Konstruktor.
Damit kannst du in deiner FirstDayFrame Class eine Instanze erzeugen - und über dieser Instanze dann setVisible(true) aufrufen - damit du es sichtbar machen kannst.

EDIT: In meinem Beispiel verwende ich, um Buttons zu identifizieren, die setActionCommand(String s) und getActionCommand() Methode. Du kannst es natürlich auch mit e.getSource = NAME machen


Java:
public class ...
{
...

actionPerformed(...)
{
    if(e.getActionCommand().equals(".."))
   {
        this.setVisible(false);
        FirstDayFrame = new FirstDayFrame(this);
   }
}

}

Java:
public class ...
{
...

MainFrame mainFrame;

public FirstDayFrame(MainFrame mainFrame)
{
    this.mainFrame = mainFrame;
}

actionPerformed(...)
{
    if(e.getActionCommand().equals(".."))
   {
        this.setVisible(false);
        mainFrame.setVisible(true);
   }
}

}

Die Anregungen die wie dir hier geben sind weder böse gemeint noch solltest du dich dadurch auf den Schlips getreten fühlen.
Ich finde es nur wichtig, dass Programmieren sich gegenseitig auf "Fehler" hinweisen und Verbesserungsvorschläge anbieten.
Nimm sie an - oder nicht. Es soll bloß helfen :)

Gruß
Robert
 

Robat

Top Contributor
Um meinen vorherigen Post besser zu verstehen hier mal ein Beispiel:

Java:
public class MainFrame extends JFrame implements ActionListener {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new MainFrame().setVisible(true);
        // TODO code application logic here
    }
  
    public MainFrame()
    {
       init();
    }
  
    private void init()
    {
        this.setSize(new Dimension(500, 500));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Bla1");
      
        JPanel p = new JPanel();
        p.setLayout(new GridLayout(2,2));
        this.add(p);
      
        JButton btn = new JButton("Bla");
        btn.setActionCommand("bla");
        btn.addActionListener(this);
        btn.setBounds(50, 50, 100, 100);
      
        p.add(btn);
  
    }

    @Override
    public void actionPerformed(ActionEvent e) {
      
        if(e.getActionCommand().equals("bla"))
        {
            this.setVisible(false);
            BlaFrame b = new BlaFrame(this);
        }
      
    }
  
}

Java:
public class BlaFrame extends JFrame implements ActionListener
{

    /////////////////////////////////////
    // Constances
    /////////////////////////////////////    
    private static final String TITLE = "BlaFrame";
   
    /////////////////////////////////////
    // Fields
    /////////////////////////////////////
    MainFrame f;
    /////////////////////////////////////
    // Constructor
    /////////////////////////////////////
    public BlaFrame(MainFrame f)
    {
        this.f = f;
        // initialization goes here
        init();
    }

    /////////////////////////////////////
    // Methodes
    /////////////////////////////////////
    /*
     *  Initialization goes here
     */
     private void init()
     {
          this.setSize(new Dimension(500, 500));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("Bla2");
       
        JPanel p = new JPanel();
        p.setLayout(new GridLayout(2,2));
        this.add(p);
       
        JButton btn = new JButton("Blub");
        btn.setActionCommand("blub");
        btn.addActionListener(this);
        btn.setBounds(50, 50, 100, 100);
       
        p.add(btn);
       
        this.setVisible(true);
   
     }

    @Override
    public void actionPerformed(ActionEvent e) {
       
        if(e.getActionCommand().equals("blub"))
        {
            this.setVisible(false);
            f.setVisible(true);
        }
       
    }
}

Gruß
Robert
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Zugriff auf Inhalt eines Elements XML & JSON 2
E Wie kann ich den XML-Inhalt mit dem Klicken auf den Hyperlink (a-Tag) auf der nächsten Seite ansehen XML & JSON 62
J XML mit russischem Inhalt einlesen XML & JSON 4
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
J XML Tag Inhalt Ändern XML & JSON 11
W XPath + Inhalt aus <td> XML & JSON 2
T Inhalt einer .xml Datei auf Javaoberfläche wiedergeben XML & JSON 4
K XML als Inhalt eines DropDown XML & JSON 6
C Kompletten Inhalt eines Tags ausgeben XML & JSON 2
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
J DOM: Attribut und Inhalt eines Elements nachträglich ändern? XML & JSON 3
D Mit Sax Inhalt zwischen Tags in Vector speichern XML & JSON 4
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
M Inhalt zwischen Tags mit Sax XML & JSON 3
W Erzeugen einer openapi spec via swagger XML & JSON 1
W Erzeugen einer Handlerklasse zum Abfangen von SOAP-Requests XML & JSON 13
D Innerhalb einer Property auf eine andere verlinken? XML & JSON 3
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
J Welche Gründe führen zu einer endlos tiefen XML? XML & JSON 4
T Pfad in einer Variablen speichern XML & JSON 1
E Wie kann ich ein XSD-Schema in einer JSP-Seite verwenden? XML & JSON 7
T Visualisierung von XML Dateien in einer Java SwingGui XML & JSON 11
R XSD in einer choice mehrmals das selbe element möglich XML & JSON 5
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
F Parsen von Daten aus einer Homepage XML & JSON 6
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
B SAX-Parser - Dokumente einlesen und in einer Map ablegen XML & JSON 2
B 2 Attribute in einer xsl XML & JSON 2
T Schreiben einer XML XML & JSON 8
B XML auf Basis einer DTD erstellen XML & JSON 2
hdi Probleme beim Erstellen einer XML XML & JSON 7
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
sylo Mehrere XSDs und mehrere Namensräume in einer XML unterbringen? XML & JSON 2
Nicer Bestimmten Wert aus einer XML Auslesen XML & JSON 34
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
J xmlencoder Zustände einer Bean schreiben XML & JSON 3
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
S Probleme beim erstellen einer Jar XML & JSON 12
J Problem mit compile einer XSD XML & JSON 3
S Einlesen einer xml Datei XML & JSON 4
F hilfe bei einer aufgabe XML & JSON 3
D Anzahl der Knoten in einer XML XML & JSON 6
R Parsen einer XML ohne Validierung XML & JSON 2
D XML Datei innerhalb einer JAR Datei parsen XML & JSON 2
M Xerces -Parsen mit einer externen Schemadatei geht nicht XML & JSON 2
cybermat Ergebnis einer XSLT-Tansformation als Rückgabewert erhalten XML & JSON 4
J Fehler beim laden einer .xml XML & JSON 3
ven000m Übungsaufgabe: Valide und gültige XML Datei zu einer DTD XML & JSON 7
A Auslesen einer XML Datei XML & JSON 58
P OutOfMemoryError beim Einlesen einer XML-Datei XML & JSON 7
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
T Einfach nur die Elemente einer XML Datei auslesen :( XML & JSON 10
Z Erzeugung einer Referenz von Knoten in JTree auf DOMTree XML & JSON 3
A Element an einer bestimmten Stelle einfügen (nicht am Ende) XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben