Hallo,
ich habe folgendes Problem:
Ich arbeite mit einer GUI in der ich Buttons eingebettet habe. diese Buttons zeigen auf ActionListener. bei einem Klick auf einen Button soll ein Thread gestartet werden. Dieser Thread befindet sich in einer externen Datei.
Wie kann ich diesen Thread aus dem ActionListener aufrufen?
Von hier aus soll der Thread gestartet werden:
Hier ist der Thread:
Hier ist die GUI:
ich habe folgendes Problem:
Ich arbeite mit einer GUI in der ich Buttons eingebettet habe. diese Buttons zeigen auf ActionListener. bei einem Klick auf einen Button soll ein Thread gestartet werden. Dieser Thread befindet sich in einer externen Datei.
Wie kann ich diesen Thread aus dem ActionListener aufrufen?
Von hier aus soll der Thread gestartet werden:
Code:
package de.trebess.shutdown;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.util.*;
public class uhrzeitAL implements ActionListener
{
private ShutdownGUI g;
private static int std = 0;
private static int min = 0;
public uhrzeitAL(ShutdownGUI g)
{
this.g = g;
}
public void actionPerformed(ActionEvent e)
{
}
}
Hier ist der Thread:
Code:
package de.trebess.shutdown;
import java.util.Calendar;
public class uhrzeitThread implements Runnable {
private ShutdownGUI g;
private static int std = 0;
private static int min = 0;
public uhrzeitThread()
{
this.g = g;
}
@Override public void run()
{
std = Integer.parseInt(g.getText1().getText());
min = Integer.parseInt(g.getText2().getText());
if(std >= 0 && std <= 23 && min >= 0 && min <= 59)
{
if(std == 0)
{
std = 24;
}
int sleep = ((std - Calendar.getInstance().get( Calendar.HOUR_OF_DAY ) ) * 3600000) + ((min - Calendar.getInstance().get( Calendar.MINUTE )) * 60000);
System.out.println(sleep);
if(sleep >= 0)
{
System.out.println(sleep);
try
{
Thread.sleep(sleep);
try
{
Runtime.getRuntime().exec("C:\\Windows\\System32\\Shutdown.exe -s -t 00");
}
catch (Exception exp)
{
}
System.exit(0);
}
catch(InterruptedException ex)
{
}
}
else
{
//System.out.println("Die angegebene Uhrzeit ist ungültig");
//System.out.println("Es ist bereits: "+Calendar.getInstance().get( Calendar.HOUR_OF_DAY )+":"+Calendar.getInstance().get( Calendar.MINUTE )+" Uhr");
}
}
}
}
Hier ist die GUI:
Code:
package de.trebess.shutdown;
import javax.swing.*;
import javax.swing.text.MaskFormatter;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Calendar;
public class ShutdownGUI extends JFrame
{
JButton uhrzeit = new JButton("Uhrzeit");
JButton countdown = new JButton("Countdown");
JTextField hour = new JTextField(2);
JTextField minute = new JTextField(2);
JLabel s = new JLabel("Std.");
JLabel m = new JLabel("Min.");
JButton info = new JButton("Info");
JMenuBar menuBar = new JMenuBar();
JMenu aktion = new JMenu("Aktion");
JMenu hilfe = new JMenu("Hilfe");
JMenuItem uhrzeitItem = new JMenuItem("Uhrzeit");
JMenuItem countdownItem = new JMenuItem("Countdown");
JMenuItem exitItem = new JMenuItem("Beenden");
String helpUhr = "<html><b>Hilfe:</b>"+"<ul><li>Der Rechner fährt zur angegebenen Uhrzeit herunter<li>Tastenkürzel: Strg+U</ul></html>";
String helpCount = "<html><b>Hilfe:</b>"+"<ul><li>Der Rechner fährt nach Ablauf der angegebenen Zeit herunter<li>Tastenkürzel: Strg+C</ul></html>";
public ShutdownGUI()
{
//JFrame
//####################################################
JFrame f = new JFrame("Shutdown-Manager 1.0");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new FlowLayout());
//Box b = new Box(BoxLayout.Y_AXIS);
//Tooltips für die Buttons
//####################################################
uhrzeit.setToolTipText(helpUhr);
countdown.setToolTipText(helpCount);
//Menübar wird gesetzt
//##################################################
menuBar.add(aktion);
menuBar.add(hilfe);
f.setJMenuBar(menuBar);
aktion.add(uhrzeitItem);
aktion.add(countdownItem);
aktion.add(exitItem);
//Shortcuts werden gesetzt
//#################################################
uhrzeitItem.setAccelerator(KeyStroke.getKeyStroke('U', InputEvent.CTRL_MASK));
countdownItem.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
exitItem.setAccelerator(KeyStroke.getKeyStroke('B', InputEvent.CTRL_MASK));
//Buttons und Textfelder werden gesetzt
//###################################################
//f.add(info);
f.add(uhrzeit);
f.add(countdown);
f.add(s);
f.add(hour);
f.add(m);
f.add(minute);
//Sichtbarkeit und andere anweisungen
//#############################################
f.pack();
f.setVisible(true);
f.setResizable(false);
f.setLocation(250,200);
//Coursor Focus wird gesetzt
//###########################################
hour.requestFocusInWindow();
//System.out.println(f.getLocation());
//Action Listener werden gesetzt
//###################################################
uhrzeit.addActionListener(new uhrzeitAL(this));
countdown.addActionListener(new countdownAL(this));
uhrzeitItem.addActionListener(new uhrzeitAL(this));
countdownItem.addActionListener(new countdownAL(this));
exitItem.addActionListener(new exitAL(this));
//info.addActionListener(new infoAL(this));
//prot.addActionListener(new protAL(this));
}
public JTextField getText1()
{
return hour;
}
public JTextField getText2()
{
return minute;
}
}
Zuletzt bearbeitet: