M
mave
Gast
Mit diesem Programm erzeuge ich eine Stundenplantafel, die Tage und Stunden in Labels anzeigt und die Fächer als Buttons anzeigt. Mit dem Button Optionen kann ich die Eingabe in Textfieldern als neuen JFrame öffnen.
Nun zu meinem Problem:
Wenn ich auf OK klicke speichert meine Programm die Daten in ein Textdokument, doch muss ich das Programm
neu starten um die Änderungen wirksam zu machen, deshalb möchte ich euch bitten mir zu helfen damit sich der Parent JFrame aktualisiert.
Danke für eure hilfe!
Code zum Start des Frames
Code des Angezeigten Fensters
Code des zu öffnenden JFrames um die Daten einzugeben
Nun zu meinem Problem:
Wenn ich auf OK klicke speichert meine Programm die Daten in ein Textdokument, doch muss ich das Programm
neu starten um die Änderungen wirksam zu machen, deshalb möchte ich euch bitten mir zu helfen damit sich der Parent JFrame aktualisiert.
Danke für eure hilfe!
Code zum Start des Frames
Code:
import javax.swing.*;
import java.awt.*;
public class OrganizerTest
{
public static void erzeugeFenster()
{
JFrame f = new Anzeige("Head");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.pack();
f.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable () {
public void run(){
erzeugeFenster();
}
}
};
}
}
Code des Angezeigten Fensters
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class Anzeige extends JFrame implements ActionListener
{
JButton option = new JButton("Optionen");
public Anzeige(String titel)
{
super (titel);
Container c = getContentPane();
c.setLayout(new BorderLayout());
JPanel tab = new JPanel();
JPanel tage = new JPanel();
JPanel south = new JPanel();
JLabel[] labM = new JLabel[11];
JButton[] butM = new JButton[56];
tab.setLayout(new GridLayout(6,11));
for(int i = 0; i<11; i++)
{
labM[i] = new JLabel("" + (i+1),JLabel.CENTER);
tab.add(labM[i]);
}
for(int i = 0; i<55; i++)
{
butM[i] = new JButton("");
tab.add(butM[i]);
}
String[] stu = new String[55];
try
{
File fn = new File("Stundenplan.txt");
Reader re = new FileReader(fn);
BufferedReader bre = new BufferedReader(re);
String s = "";
for(int k=0; k<6; k++)
s = s + bre.readLine();
int l = 0;
String[] ergebnis = s.split("\t");
for(l=0; l<ergebnis.length; l++)
stu[l]=ergebnis[l];
for(int m=0; m<55; m++)
butM[m].setText(stu[m]);
}
catch ( IOException e )
{
System.out.println( "Error reading file!" );
}
tage.setLayout(new GridLayout(6,1));
JLabel oo = new JLabel("");
JLabel mo = new JLabel("Montag");
JLabel di = new JLabel("Dienstag");
JLabel mi = new JLabel("Mittwoch");
JLabel don= new JLabel("Donnerstag");
JLabel fr = new JLabel("Freitag");
tage.add(oo);
tage.add(mo);
tage.add(di);
tage.add(mi);
tage.add(don);
tage.add(fr);
south.setLayout(new BorderLayout());
JPanel but = new JPanel();
but.setLayout(new GridLayout(1,2));
but.add(option);
south.add(but, BorderLayout.EAST);
option.addActionListener(this);
this.add(tab, BorderLayout.CENTER);
this.add(tage, BorderLayout.WEST);
// this.add(st, BorderLayout.NORTH);
this.add(south, BorderLayout.SOUTH);
}//Anzeige
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==option)
{
JFrame f2 = new Tabelle("Stundenplaneingabe");
f2.setSize(800,300);
f2.setLocationRelativeTo(null);
f2.setVisible(true);
}
}
}
Code des zu öffnenden JFrames um die Daten einzugeben
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Tabelle extends JFrame implements ActionListener
{
JButton ok = new JButton("OK");
JButton abbrechen = new JButton("Abbrechen");
JTextField[] tf = new JTextField[56];
public Tabelle(String titel)
{
super (titel);
Container c = getContentPane();
c.setLayout(new BorderLayout());
JPanel tab = new JPanel();
JPanel tage = new JPanel();
JPanel st = new JPanel();
JPanel but = new JPanel();
tab.setLayout(new GridLayout(5,11));
for(int i = 1; i<56; i++)
{ tf[i] = new JTextField(" ");
tab.add(tf[i]);
}
tage.setLayout(new GridLayout(5,1));
JLabel mo = new JLabel("Montag");
JLabel di = new JLabel("Dienstag");
JLabel mi = new JLabel("Mittwoch");
JLabel don= new JLabel("Donnerstag");
JLabel fr = new JLabel("Freitag");
tage.add(mo);
tage.add(di);
tage.add(mi);
tage.add(don);
tage.add(fr);
st.setLayout(new GridLayout(1,12));
JLabel leer = new JLabel("",JLabel.CENTER);
JLabel s1 = new JLabel("1",JLabel.CENTER);
JLabel s2 = new JLabel("2",JLabel.CENTER);
JLabel s3 = new JLabel("3",JLabel.CENTER);
JLabel s4 = new JLabel("4",JLabel.CENTER);
JLabel s5 = new JLabel("5",JLabel.CENTER);
JLabel s6 = new JLabel("6",JLabel.CENTER);
JLabel s7 = new JLabel("7",JLabel.CENTER);
JLabel s8 = new JLabel("8",JLabel.CENTER);
JLabel s9 = new JLabel("9",JLabel.CENTER);
JLabel s10 = new JLabel("10",JLabel.CENTER);
JLabel s11 = new JLabel("11",JLabel.CENTER);
st.add(leer);
st.add(s1);
st.add(s2);
st.add(s3);
st.add(s4);
st.add(s5);
st.add(s6);
st.add(s7);
st.add(s8);
st.add(s9);
st.add(s10);
st.add(s11);
JPanel south = new JPanel();
south.setLayout(new BorderLayout());
but.setLayout(new GridLayout(1,2));
but.add(abbrechen);
but.add(ok);
south.add(but, BorderLayout.EAST);
c.add(tab, BorderLayout.CENTER);
c.add(south, BorderLayout.SOUTH);
c.add(tage, BorderLayout.WEST);
c.add(st, BorderLayout.NORTH);
ok.addActionListener(this);
abbrechen.addActionListener(this);
String[] stu = new String[55];
try
{
File fn = new File("Stundenplan.txt");
Reader re = new FileReader(fn);
BufferedReader bre = new BufferedReader(re);
String s = "";
for(int i=0; i<6; i++)
s = s + bre.readLine();
int i = 0;
String[] ergebnis = s.split("\t");
for(i=0; i<ergebnis.length; i++)
stu[i]=ergebnis[i];
}
catch ( IOException e )
{
System.out.println( "Error reading file!" );
}
for(int i=1; i<=55; i++)
tf[i].setText(stu[i-1]);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==ok)
{
schreibeFile();
this.setVisible(false);
this.dispose();
}
if(e.getSource()==abbrechen)
{
this.setVisible(false);
this.dispose();
}
}
public void schreibeFile()
{
PrintWriter pw;
try{
File x = new File("Stundenplan.txt");
Writer fw = new FileWriter(x);
BufferedWriter bw = new BufferedWriter(fw);
for(int i=1; i<=55; i++){
if(i%11==1)
bw.write("\n");
bw.write(tf[i].getText()+"\t");
}
bw.flush();
bw.close();
}catch(IOException e){}
}
}