10
私はjoptionpaneに関する質問があります。メッセージダイアログをプログラムで閉じるにはどうすればいいですか?
JOptionPane.showMessageDialog(...)を使用して、メッセージダイアログを作成できます。しかし、それをプログラムで閉じる方法は?
私はjoptionpaneに関する質問があります。メッセージダイアログをプログラムで閉じるにはどうすればいいですか?
JOptionPane.showMessageDialog(...)を使用して、メッセージダイアログを作成できます。しかし、それをプログラムで閉じる方法は?
保持しているコンポーネントのWindowAncestorを取得し、Window上でdispose()
またはsetVisible(false)
を呼び出して、いつでもJOptionPaneへの参照を取得できます。ウィンドウは、例えばSwingUtilities.getWindowAncestor(component)
を使用することによって得ることができない。完璧よりも
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CloseOptionPane {
@SuppressWarnings("serial")
private static void createAndShowGui() {
final JLabel label = new JLabel();
int timerDelay = 1000;
new Timer(timerDelay , new ActionListener() {
int timeLeft = 5;
@Override
public void actionPerformed(ActionEvent e) {
if (timeLeft > 0) {
label.setText("Closing in " + timeLeft + " seconds");
timeLeft--;
} else {
((Timer)e.getSource()).stop();
Window win = SwingUtilities.getWindowAncestor(label);
win.setVisible(false);
}
}
}){{setInitialDelay(0);}}.start();
JOptionPane.showMessageDialog(null, label);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
何も.... –
誰かがLOL、この1からマークを差し引くことができ、私はこのための1を考えていませんうまく細工された例:-) –
ありがとう。ただし、JOptionPaneが表示される前に、必要なコードをすべて呼び出してください。 –