ich muß mich nocheinmal melden, konnte das mit der Statuszeile klären. Doch jetzt geht der Spaß erst richtig los.
Ich sitze wieder fest.
der code hat sich etwas verändert.
Ich sitze wieder fest.
der code hat sich etwas verändert.
Java:
import javax.swing.*;
import javax.swing.event.*; //DocumentListener;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.applet.*;
import hilfen.Dateiarbeit;
import hilfen.Inform;
import hilfen.Meldungen;
import hilfen.Simput;
import hilfen.Zielpfad;
import java.awt.event.ActionListener;
import java.io.*;
import java.text.DateFormat;
import java.util.*;
import java.nio.file.*;
//Stand: Inputfeld ist drin
// Fehler 1: Datenannahme funktioniert nur das erste mal. eine neue eingabe geht verloren
// wenn das Framefenster gestaucht wird, so das der frame das Konsolefenster nicht überlappt
// bleibt der inputwert erhalten und wird in der konsole angezeigt (Eclipse Luna)
// FEhler 2: kann das erste Panel nicht neu zeichnen
// Fehler 3: im zweiten Frame erscheint erst gar kein Panel, obwohl der Befehl dafür notiert ist
public class Lesen
{
public static String strVersion="020619.2 \n DienstVersion 1.x.";
public static String[] Spalten;
public static int Zeilenanzahl2;
public static int Spaltenzahl;
public static String Datafile;
public static String pfad;
public static String TextLine[];
public static String T="";
public static String[] Zeilen;
public static Lesen le = new Lesen();
public static String[] Zeilen3;
public static Dateiarbeit da = new Dateiarbeit();
Meldungen mel = new Meldungen();
Inform in = new Inform();
Zielpfad zi = new Zielpfad();
public static void createFrame()
{
LesenFrame frame = new LesenFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
public String Ziel()
{
String Ziel[]=zi.Zielpfad();
String Z=Ziel[0]+"\\"+Ziel[1]+"\\"+Ziel[2]+"\\"+Ziel[3]+"\\"+Ziel[4];
//System.out.println("Zielpfad: "+Z);
String Ausgabe="";
int Fehlercode=0;
Path pathname = Paths.get(Ziel[0],Ziel[1],Ziel[2],Ziel[3],Ziel[4]);
//wenn der Backuppfad geändert wird funktioniert das nicht mehr !
if (Files.exists(pathname))
{Fehlercode=2;
Ausgabe = mel.Fehler(Fehlercode, Z);
System.out.println("");} //System.out.println(Ausgabe);}
else
if (Files.notExists(pathname))
{Fehlercode=102;
Ausgabe = mel.Fehler(Fehlercode, Z);
System.out.println(Ausgabe);
System.exit(0);}
else
{Fehlercode=103;
Ausgabe = mel.Fehler(Fehlercode, Z);
System.out.println(Ausgabe);
System.exit(0);
//z.B. schreibgeschützt ?
//System.out.println(pathname+" hat einen unbekannten Status."); //Originaltext aus Java_7.pdf
}
return(Z);
}
public static void main(String[] args) throws IOException
{
Lesen le = new Lesen();
pfad=le.Ziel();
Datafile=pfad+"\\"+"Backup.dat";
DataInput aD1 = new DataInputStream(new FileInputStream(Datafile));
//DataOutput aD0 = new DataOutputStream(new FileOutputStream("ziel.txt")); //das ziel ist ein Array und keine Datei
String line2;
String line="";
Zeilenanzahl2=0;
//int d=0;
while ((line2 = aD1.readLine()) !=null)
{
StringBuffer modifiedLine = new StringBuffer(line2);
//der gesamte Inhalt der Datei wird sequentiell von einem STREAM eingelesenLesen und auf einen String geschickt //fehler
T=T+modifiedLine.toString();
Zeilenanzahl2=Zeilenanzahl2+1;
}
createFrame();
}
}
/** Ein Rahmen, der eine Grundfläche (Panel) für die Meldung enthält */
class LesenFrame extends JFrame implements ActionListener
{
public static String space1="";
public JButton konvert=new JButton("Sichern");
public JButton update=new JButton("Update");
public JButton Button2 = new JButton("EXIT");
public Label lefty=null;
public LesenPanel lep= new LesenPanel();
public Container contentPane=null;
public JLabel label=null;
public LesenPanel panel = new LesenPanel();
public Font f2 = new Font("TimesRoman", Font.ITALIC, 25);
public Font f1 = new Font("Helvetica", Font.BOLD, 22);
public Dimension screenSize=null;
//im nachhinein als Ergänzung
public Label lefty2=null;
public Label lefty3=null;
public String Status="Wähle eine Funktion";
public JTextField textField;
public DocumentListener listener;
void Eigenschaften()
{
space1 ="Verwaltung der MySQL BackupKenndaten";
lefty = new Label(space1);
lefty.setFont(f2);
konvert.addActionListener(this);
konvert.setToolTipText("speichern der Programmausgabe in Backup.frm 1");
update.addActionListener(this);
update.setToolTipText("update 1 ");
Button2.addActionListener(this);
label = new JLabel(Lesen.strVersion+" ");
label.setForeground(new Color(0,128,128));
//label.setBackground(new Color(0,128,128)); //label einfärben, geht nicht warum ?
//den Inhalt des Panels holen
contentPane = getContentPane();
panel.setForeground(Color.red);
panel.setBackground(Color.lightGray);
//Elemente aufs Panel senden
panel.setLayout(new FlowLayout());
panel.add(label);
panel.add(lefty);
panel.add(Button2);
panel.add(konvert);
panel.add(update);
//das Panel auf den Frame schicken
contentPane.add(panel);
//die Ergänzung
contentPane = getContentPane(); //bestehende Inhalte holen
lefty2 = new Label(this.Status);
JPanel panel= new JPanel();
panel.add(lefty2);
panel.setBackground(new Color(200,200,228));
panel.setForeground(Color.WHITE);
contentPane.add(panel, BorderLayout.SOUTH);
}
void Statusline(String Status)
{
contentPane = getContentPane(); //bestehende Inhalte holen
lefty2 = new Label(Status);
JPanel panel=new JPanel();
panel.add(lefty2);
panel.setForeground(Color.WHITE);
panel.setBackground(new Color(0,128,128));
contentPane.add(panel, BorderLayout.SOUTH);
lefty3 = new Label(" ");
textField = new JTextField(5);
panel.add(lefty3);
panel.add(textField);
textField.getDocument().addDocumentListener(listener);
}
//void insertUpdate(DocumentEvent e);
void Bildschirmabmessungen_holen()
{
//Bildschirmabmessungen holen
Toolkit kit = Toolkit.getDefaultToolkit();
screenSize = kit.getScreenSize();
int screenHeight=screenSize.height;
int screenWidth = screenSize.width;
//Rahmen auf bildschirm zentrieren
setSize(screenWidth / 2, screenHeight / 2);
setLocation(screenWidth / 4, screenHeight / 4);
setTitle("Lesen "+Lesen.strVersion);
setSize(WIDTH, HEIGHT);
}
public LesenFrame()
{
listener = new JTextFieldListener(); //Stelle 3
Lesen le = new Lesen();
Dateiarbeit dar = new Dateiarbeit();
Eigenschaften();
Statusline(Status);
Bildschirmabmessungen_holen();
}
public String[] TextLesen(String Datei, int Zeilenanzahl2, String T)
{
String[] Zeilen = new String[Zeilenanzahl2]; //Zeilenanzahl2];
int pos=0;
String Start;
for (int i = 0; i < Zeilenanzahl2; i++)
{
pos = T.indexOf(";");
Start = T.substring(0,1);
//3. copy von Start bis 30
Start = T.substring(0,pos);
Zeilen[i]=Start;
//4. schiebe das stück von pos+1 bis T.lenght auf T
T = T.substring(pos+1,T.length());
Zeilen[i]=Start; //läuft
}
//System.out.println("der String T :"+T);
return(Zeilen);
}
public void Nummerierung(String[] Zeilen)
{
//die For beginnt bei i=1 , wegen dem kopf
String R=""; String R1=""; String nummer="";
for (int a=1; a < Lesen.Zeilenanzahl2; a++)
{
R = Zeilen[a];
R1= Zeilen[a].substring(2,R.length());
nummer="'"+Integer.toString(a);
Zeilen[a]=nummer+R1;
}
}
public String[] createSpalten(String[] Zeilen, int SpZ)
{
int start=0;
int sp=0;
int pos= Zeilen[0].indexOf("'");
Lesen.Spaltenzahl=SpZ;//
String H1 = "";
//String[] Spalten = new String[Lesen.Spaltenzahl]; //brauche ich nicht, aber egal
Lesen.Spalten = new String[Lesen.Spaltenzahl];
//Hilfsvariablen für die do
int ido=0;
int Startdo=0;
int posdo=0;
String E1="";
String E3=""; //hier wird E1 aufaddiert
int Solllae=0;
int Istlae =0;
int variabel=0;
int u=0;
int i=0;
int Laenge=Zeilen.length-1;
for (i=1; i <= Zeilen.length-1; i++)
{ //hier laufen die zeilen durch
ido=0; posdo=0; E1="";E3="";
//hier wird die spalte bestimmt
do {
//Suche das erste '
posdo = Zeilen[i].indexOf("'");
//kopiere aus E von Start bis pos-1
E1 = Zeilen[i].substring(Startdo,posdo);
//für das neue E: kopiere von der Stelle pos-1 bis E.length();
Zeilen[i] = Zeilen[i].substring(posdo+1, Zeilen[i].length());
//ergänze E1 um 3 space
E1=E1; //+" ";
// variabel = soll-istlae
if (ido==0)
{ variabel=0;
E1=E1+" ";
}
if ((ido==1)||(ido==2)||(ido==3))
{
Solllae=18;
variabel=Solllae-E1.length();
for (u=0; u < variabel; u++)
{
E1=E1+" ";
}
}
if (ido==4)
{
Solllae=20;
variabel=Solllae-E1.length();
for (u=0; u < variabel; u++)
{
E1=" "+E1+" ";
}
}
if ((ido==5)||(ido==6))
{
Solllae=24;
variabel=Solllae-E1.length();
for (u=0; u < variabel; u++)
{
E1=E1+" ";
}
}
if (ido==7) //Test false or true ?
{
Solllae=15;
variabel=Solllae-E1.length();
for (u=0; u < variabel; u++)
{
E1=""+E1+" ";
}
}
//spalte 8 TestTime ist wie es aussieht nicht nötig, kommt von alleine !
u=0;
//gehe nach oben und hole das nächste Stück beginnend von der neuen startposition Start bleibt 0 !
//wieder zusammensetzen
E3=E3+E1;
ido ++;
}while(ido <9);
Zeilen[i]=E3;
}
return(Zeilen);
}
public int SpaltenZ(String[] Zeilen)
{
//ermittelt die Anzahl der ' im Kopf
int k=0; int pos=0; String T1="";
T1=Zeilen[0];
int r=0; int Spaltenanzahl=0;
for (k=0; k < T1.length(); k++)
{
pos = T1.indexOf("'");
//this.Enter();
T1=T1.substring(pos+1,T1.length());
if (T1.length() == 0)
{
Spaltenanzahl=r+1; k=1;
}
else {k=1; r++;}
}
return(Spaltenanzahl);
}
public void doClick_1()
{ //DatenSicherung der formatierten Ausgabe
//Zeilen2[i] kommt hier nicht an. darum wurde in Lesen String[] Zeilen3 definiert;
//mit Zeilen2 soll nicht weiter experimentiert werden.
String time="";
File f = new File(Lesen.Datafile);
if (f.exists())
{
DateFormat df = DateFormat.getInstance();
Date d = new Date(f.lastModified());
time = df.format(d);
}
//System.out.println(Lesen.pfad); //kommt der zielpfad rein ?
String fName=Lesen.pfad+"\\"+"Backup.frm";
String Anzeigetxt=time;
hilfen.Dateiarbeit.append_writefile2(fName, Lesen.Zeilen3, Anzeigetxt);
}
public void doClick_2()
{
System.out.println("button EXIT");
Status="Reaktion von Exit";
lefty2.setText("zeige den wert in der Konsole");
System.out.println("Inputwert :"+textField.getText());
}
public void doClick_3()
{
second_frame se = new second_frame();
se.createFrame();
se.Eigenschaften();
}
public void actionPerformed(ActionEvent e)
{
String FileName="";
String strComm = e.getActionCommand();
String Inhalt ="";
//JOptionPane.showMessageDialog(null,strComm + " Actionseingangs Kontrolle");
if (strComm.equals("Sichern"))
{
String Notiz = "in "+Lesen.pfad+"\\"+"Backup.frm";
JOptionPane.showMessageDialog(null,strComm + " "+Notiz);
doClick_1();
}
if (strComm.equals("EXIT"))
{
String Notiz = "Verlasse das Fenster:";
JOptionPane.showMessageDialog(null,strComm + " "+Notiz);
//myWindow2.dispose();
doClick_2();
Status="Reaktion auf Exit";
Statusline(Status);
}
if (strComm.equals("Update"))
{
String Notiz = "Backupinformationen updaten";
JOptionPane.showMessageDialog(null,strComm + " "+Notiz);
doClick_3();
}
}
public static final int WIDTH = 1200;
public static final int HEIGHT = 500;
//Stelle
private class JTextFieldListener implements DocumentListener
{
@Override
public void insertUpdate(DocumentEvent e)
{
//textField.getDocument().addDocumentListener(listener);
System.out.println("Inputwert :"+textField.getText());
}
@Override
public void changedUpdate(DocumentEvent arg0)
{
// TODO Automatisch generierter Methodenstub
//textField.getDocument().addDocumentListener(listener);
System.out.println("Inputwert :"+textField.getText());
}
@Override
public void removeUpdate(DocumentEvent arg0) {
// TODO Automatisch generierter Methodenstub
}
}
public class NewfirstPanel extends JPanel
{
//kann auf dem ersten panel nicht neu zeichnen da ?
public void paintComponent(Graphics g)
{ System.out.println("wwwwwwwwwwwwwwwwwwwww");
super.paintComponent(g); //arg0
g.setFont(new Font("Serif", Font.BOLD, 18));
int MESSAGE_X= 35;
int MESSAGE_Y=100;
setForeground(Color.green);
g.drawString("ABCD", MESSAGE_X, MESSAGE_Y);
MESSAGE_Y = MESSAGE_Y+30;
g.setFont(new Font("TimesRoman", Font.BOLD, 15));
g.drawString("EFGH", MESSAGE_X, MESSAGE_Y);
}
}
}
class second_frame extends JFrame implements ActionListener
{
public static second_frame frame_ = new second_frame();
public static Label lefty=null;
public static Container contentPane=null;
public static LesenPanel panel = new LesenPanel();
public static String space1="";
public static Font f2 = new Font("TimesRoman", Font.ITALIC, 25);
public static Font f1 = new Font("Helvetica", Font.BOLD, 22);
public Dimension screenSize=null;
public JButton Button2 = new JButton("Quit");
//im nachhinein als Ergänzung
public Label lefty2=null;
public static void createFrame()
{
frame_.dispose();
frame_.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame_.show();
}
public void Eigenschaften()
{ //das Panel im second wird nicht gesetzt ?
frame_.space1="second Frame TEST";
lefty = new Label(frame_.space1);
lefty.setFont(f2);
contentPane = frame_.getContentPane();
panel.setForeground(Color.cyan);
panel.setBackground(Color.blue);
panel.setLayout(new FlowLayout());
panel.add(lefty);
panel.add(Button2);
contentPane.add(panel); //hier soll das panel gesagt werden, wird aber nichts
//alles andere erscheint aber
frame_.setTitle("Anwendung");
frame_.setSize(400, 300);
Button2.addActionListener(this);
//die Ergänzung
lefty2 = new Label("Statuszeile");
JPanel panel2= new JPanel();
panel2.add(lefty2);
panel2.setBackground(new Color(0,128,128));
panel2.setForeground(Color.WHITE);
contentPane.add(panel2, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent e)
{
String strComm = e.getActionCommand();
if (strComm.equals("Quit"))
{
frame_.dispose(); //dispose();
}
}
class Panelsecond_frame extends JPanel
{
//kann auf dem second nicht zeichnen, ist ja auch gar kein Panel da ?
public void paintComponent(Graphics g)
{ System.out.println("wwwwwwwwwwwwwwwwwwwww");
super.paintComponent(g); //arg0
g.setFont(new Font("Serif", Font.BOLD, 18));
int MESSAGE_X= 35;
int MESSAGE_Y=100;
setForeground(Color.green);
g.drawString("ABCD", MESSAGE_X, MESSAGE_Y);
MESSAGE_Y = MESSAGE_Y+30;
g.setFont(new Font("TimesRoman", Font.BOLD, 15));
g.drawString("EFGH", MESSAGE_X, MESSAGE_Y);
}
}
}
/*
*/
/** Eine grundfläche die eine Meldung anzeigt */
class LesenPanel extends JPanel
{
Dateiarbeit da=new Dateiarbeit();
//private String[] Null;
public void paintComponent(Graphics g)
{
super.paintComponent(g); //arg0
LesenFrame no = new LesenFrame();
Lesen le=new Lesen();
String[] Zeilen2 = new String[Lesen.Zeilenanzahl2]; //Zeilen2 ist das ZielArray, muß genauso bgroß wie die quelle
Zeilen2 = no.TextLesen(Lesen.Datafile,Lesen.Zeilenanzahl2,Lesen.T);
le.Zeilen3=Zeilen2; //Null;
int SpZ = no.SpaltenZ(Zeilen2);
//Selektion der Spalten
Zeilen2=no.createSpalten(Zeilen2,SpZ);
no.Nummerierung(Zeilen2);
String Kopf = "Nr. AltName TimeStamp NeuName Size in Byte CreateDate&Time CopyDate&Time TEST TestDate&Time ";
g.setFont(new Font("Serif", Font.BOLD, 18));
int MESSAGE_X= 35;
int MESSAGE_Y=100;
setForeground(Color.blue);
g.drawString(Kopf, MESSAGE_X, MESSAGE_Y);
MESSAGE_Y = MESSAGE_Y+30;
g.setFont(new Font("TimesRoman", Font.BOLD, 15));
for (int i = 1; i < Zeilen2.length; i++)
{
g.drawString(Zeilen2[i], MESSAGE_X, MESSAGE_Y);
MESSAGE_Y=MESSAGE_Y+12;
}
}
}
Zuletzt bearbeitet von einem Moderator: