Swing Meldungen von Ereignissen

Onkel Tom

Mitglied
Hallo Forum,
habe fehler im programm, was soll ich machen, ich muß das ganze Programm schicken. dazu gehören auch das hilfe-package.
ich bin eine Privatperson, bei mir ist nicht viel zu holen. vom Prinzip her brauch ich noch nicht mal einen virenschutz.

wenn ich das Programm umsetze auf eine abstrakte form, dann ist das eine mühevolle sauarbeit.
also könnt ihr ruhig den ganzen code bekommen, das macht man in der regel wohl nicht. aber was solls.

das problem:
--------------
das Programm hat eine Statuszeile, die von den buttons mit Informationen versorgt werden. doch der Button Prozess1 erreicht die Statuszeile nicht.


Java:
import javax.swing.*;
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: Frameaufbau wurde mit Methoden untersetzt
//       das Programm unterscheidet einen primären Frame und einen sekundären Frame    
//       der sekundärFrame wird allerdings noch nicht mit Prozessen untersetzt

// der Button Update wird erst einmal versteckt, außerdem sind fehler drin.
//  wird der quit-button gedrückt, sollte der frame2 wegen dispose() eigentlich
//  gelöscht werden. das macht er aber nicht, er behält seine daten ?

//  Fehler wird erst einmal ignoriert, brauche die statuszeile und das Inputfenster

public class Lesen
{
   public static String strVersion="28052019.1 \n DienstVersion 1.1.";
   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 String Status="Wähle eine Funktion";
   
    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);
       
        //Statusline(Status);
    }
   
    void Statusline(String Status)
    {
        //panel.add(lefty2);
        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);
    }
   
   
   
    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()
    {  
        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 Prozess1");
        Status="Reaktion von Prozess1";
        /*
        contentPane = getContentPane();        //bestehende Inhalte holen
        lefty2 = new Label(Status);
        JPanel panel=new JPanel();
        panel.setForeground(Color.WHITE);
        panel.add(lefty2);
        contentPane.add(panel, BorderLayout.SOUTH);
        */
        Status="Reaktion auf Prozess1";
        Statusline(Status);
    }
   
    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("Prozess1"))
              {
                 String Notiz = "Verlasse das Fenster:";
                 JOptionPane.showMessageDialog(null,strComm + "  "+Notiz);
                 //myWindow2.hide();         //deaktiviert das Fenster, das ist ein zwiter frame  
                 //myWindow2.dispose();
                 doClick_2();
              }
          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;
}


class second_frame extends JFrame implements ActionListener
{
    //ActionListener act=new 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()
   {
       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);
       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();
       }
   }
 
}


/*
*/

/** 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;
        }
   
    }
   
  }


//die hilfe.Klassen muß ich auch schicken, sonst könnt ihr nichts mit meinem Programm anfangen

package hilfen;
public class Zielpfad
{
public String strVersion="14042019.1";
public String[] Zielpfad()
{
  String Pfad[]= {"H:",                                       //0
                "Backup",
                  "MySQL",
                    "Primaer",
                       "mysqldump"};                      //4

  //sollten weitere Programme folgen, die diese Funktion nutzen ist das array so weiter zu schreiben
  return(Pfad);
}
}


//Simput.java fehlt, die wurde in diesem Programm nicht verarbeitet
//Meldung.java fehlt auch dto.
//nform.java             fehlt

//Dateiarbeit.java
package hilfen;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import hilfen.Meldungen;
import hilfen.Inform;
import java.util.Date;
import java.text.*;
public class Dateiarbeit
{
//'Dateiarbeit.class' wird im Konsolebetrieb mit der ENV-Variable CLASSPATH systemweit bekannt gemacht
//die hier liegenden Methoden müssen so geschrieben werden, das andere Programme ebenfalls zugreifen können

public String strVersion="15052019.1";
public String strText="Methoden zur Dateibehandlung";
public String[] Eigenschaften =new String[8];
public long bytezahl=0;   
public String now;
public String copyT;

Meldungen me = new Meldungen();

public void clsTotal()                                           //19
   {
       int s=30;
       String[] delete = new String[s];
       for (int i =0; i < delete.length; i++)
       System.out.println(" ");
   }



public static void append_writefile2(String fName, String Zeilen2[],String Anzeigetxt)
{
  File file = new File(fName);
     Writer fw =null;
  try
  {   String now= new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
   fw = new FileWriter( file,false);
   //fw.append( System.getProperty("line.separator") ); // e.g. "\n"
   fw.append("#Diese Datei wurde von Lesen.java am "+now+" vom Backup.dat {erstellt am "+Anzeigetxt+"} abgeleitet.\n");
   fw.append("#..... sammelt keine Daten und gibt sie auch nicht an SQL weiter\n");
   fw.append("#..... wurde von Lesen.java mit der Funktion DATENSICHERUNG erzeugt\n");
   fw.append("#..... und dient der Anzeige der formatierten Protokolldaten.\n");
   fw.append("#\n");
   fw.append("# ! lade die Datei mit Notepad.exe um die Formatierung zu sehen !\n\n");
   int i=0;
   for (i=0; i < Zeilen2.length; i++)
    {fw.append(Zeilen2[i]+"\n");}
  
  }
  catch ( IOException e ) {
     System.err.println( "Konnte Datei nicht erstellen" );
   }
   finally {
     if ( fw != null )
       try { fw.close(); } catch ( IOException e ) { e.printStackTrace(); }
   }
  //System.out.println(file.getAbsolutePath());
}


public void append_writefile(String fName, String Data[],String Anzeigetxt)
{
  File file = new File(fName);
     Writer fw =null;
  try
  {
    fw = new FileWriter( file,true);
    fw.append( System.getProperty("line.separator") ); // e.g. "\n"
    fw.append(Data[0]+"'"+Data[1]+"'"+Data[2]+"'"+Data[3]+"'"+Data[4]+"'"+Data[5]+"'"+Data[6]+"'"+Data[7]+"'"+Data[8]+"';");   
    int Fehlercode=05; 
          String Ausgabe  = me.Fehler(Fehlercode, Anzeigetxt);
       System.out.println(Ausgabe);
  }
  catch ( IOException e ) {
    System.err.println( "Konnte Datei nicht erstellen" );
  }
  finally {
    if ( fw != null )
      try { fw.close(); } catch ( IOException e ) { e.printStackTrace(); }
  }
}

public int argumente(String arguments[])
{
        //System.out.println("in Dateiarbeit argumente");
  int code=99;
  if (arguments.length ==0)
     {
       //System.out.println("Abfang wenn Parameter=0");
       int Fehlercode=100;
       Meldungen mel = new Meldungen();
    String Ausgabe    = mel.Fehler(Fehlercode," Beachte die Betriebsbedingung des Programms" );
    System.out.println(Ausgabe);
    Inform in2 = new Inform();
    System.out.println(" ");
    in2.Funktionsumfang();
       //System.exit(1);
    }
  

  if (arguments.length > 0)
  { code =0; }
       else { code=100; }   
  return(code);
}


public void pause(int warte)                               
    {
         String Arbeitsort="";
   File f2 = new File(Arbeitsort);
   Meldungen f3=new Meldungen();
   Arbeitsort = f2.getAbsolutePath();
   int Fehlercode=300;
   String Ausgabe    = f3.Fehler(Fehlercode,Arbeitsort);
   System.out.println(Ausgabe);
  
      int jPause=0; int x1=0;
      while (jPause < warte)
        {
         jPause=jPause+1;
         for (x1=0; x1 < 20; x1++) {System.out.print("\rPause. CTRL-C möglich. Warte bis "+warte+"  "+jPause);}
        }
            this.Enter();                                                               //this.Enter()  okay
        }


public void Enter()                                                                  //Enter() funktioniert                                     
     {
        try
          { 
            String taste;
            BufferedReader infile = new BufferedReader ( new InputStreamReader (System.in));
           // String lesen
           System.out.println ("                       ... press da.ENTER");
           taste = infile.readLine();
         } catch (Exception e) { System.out.println("falsche Eingabe - " + e);}
     }


    public int del(String dname)
    {
     File f = new File(dname); int code=0;
        if (f.exists())
           { code=6;
             f.delete();
           }
     // code=0;
     return(code);
    }

       public int fName(String Pfadname)
       {
        //Erzeugung des Arrays
        File f = new File(Pfadname); int code=0;
        if (f.exists())
           { code=1;
       bytezahl=f.length();
             DateFormat df = DateFormat.getInstance();
             Date d = new Date(f.lastModified());
             String time = df.format(d);
    String now = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
             Eigenschaften[0]="0";           //lfdnr, das ist ein rechenwert, der muß konvertiert werden vopn int >String 
             Eigenschaften[1]=f.getAbsolutePath();            //AltName  = dname           
             Eigenschaften[2]="leer";                          //NeuName, ist hier noch unbekannt, muß anderswo eingebracht werden 
             Eigenschaften[3]=String.valueOf(bytezahl);        //Size(byte]
             Eigenschaften[4]=now;                             //CreateDate & Time Zeit1
             Eigenschaften[5]="Kopiert am  Datum und Zeit";   //ist vorhanden
             Eigenschaften[6]=time;                           //Datumsstempel der Alt-Datei
             Eigenschaften[7]="frei";                         //freier arrayplatz
            
           }     
            else { code=101; }                     
     return(code); 
       }
      
       public void showDatei_Eigenschaften()
       {
      int Merkmale=this.Eigenschaften.length; 
      System.out.println(""); 
      System.out.println("Anzahl der Merkmale     : " + Merkmale);
      System.out.println("\n-----------------------------------------------------------------------------------------------------------------------------------");
         System.out.println(" Standort der Datei         : " + this.Eigenschaften[1]);
         System.out.println(" Datumstempel der Alt-Datei : " + this.Eigenschaften[6]);
         System.out.println(" Dateigroesse in Bytes      : " + this.bytezahl);
         System.out.println(" Laufzeit des Programms     : " + this.Eigenschaften[4]);
       }
  
       public String Systemzeit()
    {
        String syszeit = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date());
     return(syszeit);
    } 
    
     public String renameTo(String argName)
     { 
      //für eine Datei ist ein neuer Name zu generieren. Der alte name kommt ohne suffix rein
      //der neue Name wird gebildet als verkettung des alten mit der systemzeit
      //die Systemzeit wird in einer unabhängigen methode separat erzeugt
    
      //holen der systemzeit
          now =this.Systemzeit(); 
         argName=argName+"_";
         //zusammensetzen
         String s2 = argName+now;
        //Stringoperation 1: entfernen der doppelpunkte, ersetzen durch punkt
        s2=s2.replace(':','.');
        //Stringoperation 2: entfernen des space, ersetzen durch _
   String neuName = s2.replace(' ','_');
     return(neuName);
     }
    
     public void filecopy2(String que, String zie)
  {
     Path quelle = Paths.get(que);
          Path ziel = Paths.get(zie);
        try
          {
            long zeit = System.currentTimeMillis();
            System.out.println("Kopieren von "+quelle+" in "+ziel+ " gestartet:");
            Files.copy(quelle, ziel, StandardCopyOption.REPLACE_EXISTING);
            zeit = System.currentTimeMillis()- zeit;
              copyT=this.Systemzeit();
            int Fehlercode=03; 
              String Ausgabe  = me.Fehler(Fehlercode, "Es wurden " + Files.size(quelle) + " Bytes kopiert. "+ "(Benoetigte Zeit: " + zeit + " Millisekunden.)");
            System.out.println(Ausgabe);
          } catch (IOException e)
            {
           int Fehlercode=106; 
              String Ausgabe  = me.Fehler(Fehlercode, " Datei ist nicht existent   - EXIT -");
              System.err.println(e.getMessage()+"\n"+Ausgabe);
              System.exit(0);
            }
  } 
      
}
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor

Onkel Tom

Mitglied
Was hat Virenschutz mit Privatperson und viel zu holen zu tun?!?


Wie auch? Du hast keinen Button Prozess1.

Java:
class LesenFrame extends JFrame implements ActionListener
{

hier in der LesenFrame steht der Button EXIT, wenn ich den auf 'Prozess1' korrigiere bzw. so lasse und 'Prozess1'
zurückbenenne auf 'EXIT', läuft es trotzdem nicht. das hinter 'EXIT' kein Exit-Code liegt ist mir völlig klar.
ich brauchte lediglich einen TestButton,,,,,
ich hatte ursprünglich dort 'EXIT' zu stehen, und änderte es extra wegen dem Forum in 'Prozess1'.
Weil ich dachte, daß die Anderen denken würden, wieso legt der hinter dem EXIT-Button noch eine Meldung für die
Statuszeile ?

Java:
...
    public JButton konvert=new JButton("Sichern");
    public JButton update=new JButton("Update");
    public JButton Button2 = new JButton("EXIT");
Zurückbennen muß ich dann in:

Java:
public void actionPerformed(ActionEvent e)
   {
    if (strComm.equals("Prozess1"))   in 'EXIT'    

   }
doch es läuft nicht.
 
Zuletzt bearbeitet von einem Moderator:

Onkel Tom

Mitglied
strComm ist der String, der zuvor per JButton#setActionCommand gesetzt wurde und nicht der Button-Text.

1. der Button 'EXIT' funktioniert.
das kann kontrolliert werden mit
Java:
String Notiz = "Verlasse das Fenster:";
JOptionPane.showMessageDialog(null,strComm + "  "+Notiz);

2. die Methode doClick_2() funktioniert ebenfalls.
Kontrolle: System.out.println("button EXIT");

3. der Code für die beiden anderen Button ist analog aufgebaut und die funktionieren ebenfalls.
4. den Ausdruck 'setActionCommand' steht nicht in meinem Text, sehe ich zum ersten mal.
5. es geht um die Statuszeile und nicht um die button.

6. Außerdem: was du als Button-Text bezeichnest ist der Name des Buttons und nicht irgendein Text.
der Name des Button wird von diesem String strComm aufgenommen, und das ist bei mir auch so mit
Java:
if  if (strComm.equals("EXIT"))
{
  ;
}
programmiert.
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor
zu 4.: wenn setActionCommand nicht aufgerufen wird, liefert getActionCommand() tatsächlich die Beschriftung des Buttons. Das war mir neu und es ist auch eine ganz schlechte Idee, sich auf die Beschriftung zu verlassen. Tatsächlich ist es schon eine schlechte Idee, unterschiedliche Aktionen anhand eines Command-Strings mit Hilfe von if-else-Kaskaden/switch ausführen zu wollen.

zu 5.: verstehe, Du solltest halt zur Laufzeit nicht ständig neue Panels hinzufügen.

zu 6.: das ist kein Name sondern der Text: https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html#JButton-java.lang.String-
 

Onkel Tom

Mitglied
zu 4.: wenn setActionCommand nicht aufgerufen wird, liefert getActionCommand() tatsächlich die Beschriftung des Buttons. Das war mir neu und es ist auch eine ganz schlechte Idee, sich auf die Beschriftung zu verlassen. Tatsächlich ist es schon eine schlechte Idee, unterschiedliche Aktionen anhand eines Command-Strings mit Hilfe von if-else-Kaskaden/switch ausführen zu wollen.

zu 5.: verstehe, Du solltest halt zur Laufzeit nicht ständig neue Panels hinzufügen.

zu 6.: das ist kein Name sondern der Text: https://docs.oracle.com/javase/8/docs/api/javax/swing/JButton.html#JButton-java.lang.String-
habe die public void setActionCommand(String actionCommand) gefunden. Aber wie wird die nun eingesetzt ?
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor
Zum Beispiel:
Java:
button.setActionCommand("EXIT");
Dann liefert getActionCommand() den Wert "EXIT" unabhängig von der Beschriftung.
 

Ähnliche Java Themen


Oben