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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 47141
Url: https://administrator.de/forum/run-file-und-close-windows-aktion-benoetigt-erledigt-47141.html
Ausgedruckt am: 22.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar
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?
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?