techpriest
Goto Top

Run File und CLose Windows Aktion benötigt - Erledigt!

Hallo zusammen,

ich bin Java Neuling und gerade dabei ein GUI in JAVA für unsere DAUs zu schreiben.

Ich plane eine einfache Batch-Routine für verschiedene Prozesse, die nach einem Button Klick ausgelöst wird. Es soll nur diesen Button geben, der eine Batch-Datei startet und das Fenster dann schliesst, damit die auch ja nicht drum rum kommen, das zu machen.

Mein Problem, ich weiss nicht wie das geht und wurde auch nach tagelangem Suchen nicht fündig.

Hier mal mein bisheriger Entwurf:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class batchRoutine extends JFrame
{Dialogues
private JLabel lbDialog1;
private JLabel lbDialog2;
private JLabel lbDialog3;
private JButton btOk;
constructor
public batchRoutine()
{Initialise window
super("Start Batch Routine");

Window Size
int wWidth, wHeight, bWidth, bHeight, btX, btY;
wWidth=500;
wHeight=150;
bWidth=wWidth/4;
bHeight=bWidth/5;
btX=wWidth/2-bWidth/2;
btY=wHeight-bHeight-wHeight/4;
setLocation(sWidth()/2-(wWidth/2),sHeight()/2-(wHeight/2));
setSize(wWidth,wHeight);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cp=getContentPane();
cp.setLayout(null);

instance Dialogues
lbDialog1=new JLabel("Text1",JLabel.CENTER);
lbDialog1.setBounds(10,10,480,20);
cp.add(lbDialog1);
lbDialog2=new JLabel("Text2",JLabel.CENTER);
lbDialog2.setBounds(10,30,480,20);
cp.add(lbDialog2);
lbDialog3=new JLabel("TExt3",JLabel.CENTER);
lbDialog3.setBounds(10,50,480,20);
cp.add(lbDialog3);
btOk=new JButton("Continue...");
btOk.setBounds(btX,btY,bWidth,bHeight);
cp.add(btOk);

add listener
addWindowListener
(
new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);}
});

window visible
setVisible(true);}

get screensize
private int sWidth()
{return Toolkit.getDefaultToolkit().getScreenSize().width;}
private int sHeight()
{return Toolkit.getDefaultToolkit().getScreenSize().height;}

//main methode
public static void main(String args)
{new batchRoutine();}}

Das bewirkt, dass zwar das Fenster angezeigt wird, der Button macht aber noch nichts, da mir der richtige Event bzw. Listener fehlt. Dann fehlt mir auch noch der entsprechende Aufruf für den Start (!) einer Batch-Datei, damit diese ausgeführt wird.

Außerdem gibt es noch das hässliche Windows-"x" zum schliessen des Fensters, kann man das noch deaktivieren?

Weiteres Problem, nach dem compilieren kann ich das Ding nicht mir java oder javaw starten. Ich bekomme die Fehlermeldung: "Could not find Main class". Sollte aber eigentlich alles da sein?!?

Danke schon mal für eure Hilfe

mfg,
Techpriest

PS: Ich benutze den JCreator von Xinox Version 3.50 und bitte keine Kommentare "Nimm besser den...", ich komme damit recht gut zurecht. face-wink

Content-Key: 47141

Url: https://administrator.de/contentid/47141

Printed on: April 23, 2024 at 11:04 o'clock

Member: AndreasHoster
AndreasHoster Dec 20, 2006 at 15:38:24 (UTC)
Goto Top
Also, der Actionlistener mit entsprechender Funktion sieht so aus:

btOK.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
Runtime.getRuntime().exec("C:\\windows\\system32\\notepad.exe");
} catch (IOException e1) {
e1.printStackTrace();
}
dispose();
}
});

Exec kann noch ein bischen mehr, einfach mal in den Docs schauen und dispose() schließt ein Fenster.
Exec wirft eine I/O Exception, deswegen Try/Catch. Naturlich sollte der Catch was sinnvolleres machen, als den StackTrace auszugeben.

Vom Code her (abgesehen von einem fehlenden Semikolon bei Window size) gibts keinen Grund, warum es nicht tun sollte.
Eventuell was mit ClassPath bei Dir?
Member: Techpriest
Techpriest Dec 21, 2006 at 08:45:16 (UTC)
Goto Top
Danke für die schnelle Hilfe. Ich hab den Passus unter den windowListener eingebaut. Nur schmeisst mir der beim Compilieren folgenden Fehler:

Configuration: <Default>--------------------
F:\Backup\backupRoutine.java:75: cannot find symbol
symbol: class IOException
catch(IOException e1)
^
1 error

Process completed.

Nur, ich find den Fehler nicht. Fehlt da irgendwo noch eine Deklaration oder ein Aufruf?
Member: AndreasHoster
AndreasHoster Dec 21, 2006 at 10:10:37 (UTC)
Goto Top
Sorry, da fehlt noch das import Statement.
Also entweder oben noch
import java.io.IOException;
eintragen, oder unten
catch(java.io.IOException e1)

Sonst weiß der Compiler nicht, woher die IOException kommt.
Member: Techpriest
Techpriest Jan 02, 2007 at 08:55:11 (UTC)
Goto Top
Okay, danke das wars. Jetzt geht alles.