❶ java窗口關閉事件。。。。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
這句話其實是1.4以後才有的,它代替了以前的WindowListener中的windoClose方法,EXIT_ON_CLOSE的意思是,當前窗口在點擊版關閉的時候,會關閉主線權程,OK?所以你的所有應用都被關閉了
那麼.你就不要這么設置,你的窗口在設置的時候寫成,DISPOSE_ON_CLOSE就可以了.DIPOSE就是僅僅釋放窗體資源,而不會關閉主線程.
這個DISPOSE_ON_CLOSE靜態欄位的設置,代替你在windoClose寫"this.dispose()"
❷ java線程如何停止
你實現的有問題吧,
有繼承線程類,或實現Runnable嗎?
如果沒有這樣,那你做的想當於在同一個線程里做了一個死循環。
下邊是個例子,你參考一下,
點開始過度條在動,點一下暫停,會停下來,再點一下暫停又會動起來。
點stop會停下來,你看一下。
----------------------------------------------------------------
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JToolBar;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Table extends JFrame implements Runnable {
private JProgressBar progress = new JProgressBar();
private boolean start = false;
private boolean pause = false;
private JButton btnStart;
public Table() {
setResizable(false);
getContentPane().setLayout(null);
JToolBar toolBar = new JToolBar();
toolBar.add(new JLabel("state"));
toolBar.add(progress);
toolBar.setFloatable(false);
toolBar.setBounds(0, 247, 454, 21);
getContentPane().add(toolBar);
btnStart = new JButton("start");
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
login();
}
});
btnStart.setBounds(12, 10, 91, 21);
getContentPane().add(btnStart);
JButton btnPause = new JButton("Pause");
btnPause.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pause = !pause;
}
});
btnPause.setBounds(131, 10, 91, 21);
getContentPane().add(btnPause);
JButton btnStop = new JButton("stop");
btnStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
start = false;
}
});
btnStop.setBounds(241, 10, 91, 21);
getContentPane().add(btnStop);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setSize(460, 300);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screenSize.width - getWidth()) / 2,
(screenSize.height - getHeight()) / 2);
setVisible(true);
}
public static void main(String[] args) {
new Table();
}
private void login() {
start = true;
btnStart.setEnabled(false);
new Thread(this).start();
}
public void run() {
int value = 0;
while (start) {
try {
if (pause) {
Thread.sleep(50);
continue;
}
progress.setValue(value++);
if (progress.getValue() == progress.getMaximum()) {
break;
}
Thread.sleep(50);
} catch (Exception e) {
}
}
}
}
❸ java Swing 界面關閉事件
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
super.windowClosing(e);
//新建窗口。回。。。。操作答
//System.out.println("OK");
}
});
❹ JAVA關於窗體JFrame的關閉事件
EXIT_ON_CLOSE是JFrame類的源靜態常量,可以直接用類名調用,用F.EXIT_ON_CLOSE也可以調用,但是會有warning,提示JFrame.EXIT_ON_CLOSE是靜態量,應該用一個靜態方法聲明
❺ Java 關閉事件
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
Window w=e.getWindow();
w.dispose();
}
}
);
這個方法放錯位置了抄,放在構造方法里就對了,你放在了actionPerformered裡面。我發現的是這里,不知道是不是。