Werte Java-Profis
Ich bin am Verzweifeln mit diesem Anfängerproblem. Ich möchte in einem JFrame mit dem Start Buttons einen Thread laufen lassen bzw. dann mit dem Beenden -Button beenden (beenden mit der empfohlenen interrupt()-Methode).
Ich kapier einfach die Logik der Interrupt-Methoden im Internet nicht. Super wäre noch eine kurze Erklärung der Lösung. Tausend Dank vorab. (fhs14647)
Ich bin am Verzweifeln mit diesem Anfängerproblem. Ich möchte in einem JFrame mit dem Start Buttons einen Thread laufen lassen bzw. dann mit dem Beenden -Button beenden (beenden mit der empfohlenen interrupt()-Methode).
Ich kapier einfach die Logik der Interrupt-Methoden im Internet nicht. Super wäre noch eine kurze Erklärung der Lösung. Tausend Dank vorab. (fhs14647)
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
public class Guitest extends JFrame implements Runnable, ActionListener{
private JPanel contentPane;
private JButton btnStart;
private JButton btnBeenden;
private boolean running = true;
private Thread t;
private Guitest g;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Guitest frame = new Guitest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Guitest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
btnStart = new JButton("Start");
btnStart.addActionListener(this);
btnStart.setBounds(39, 200, 89, 23);
contentPane.add(btnStart);
btnBeenden = new JButton("Beenden");
btnBeenden.setBounds(164, 200, 89, 23);
contentPane.add(btnBeenden);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object o = e.getSource();
if(o == this.btnStart)
{
g = new Guitest();
t = new Thread(g);
t.start();
}
if(o == this.btnBeenden)
{
t.interrupt();
}
}
@Override
public void run() {
while(true)
{
System.out.println("testing..." );
}
}}
Zuletzt bearbeitet: