JavaGUIのサンプルです。
JavaのGUIについて、mainクラスに全記述されているサンプルが散見され、私自身、実用的な使用法を見つけるのに難儀した覚えがあるので、mainクラスから分離した形で実装したGUIダイアログ群をここで共有します。
#1.swing.JOptionPane
##InfoDialog
汎用的なダイアログです。
public class Main {
public static void main(String[] args) {
InfoDialog.showDialog("ファイルを選択してください(.xlsx)。");
}
}
import javax.swing.JOptionPane;
class InfoDialog {
public static void showDialog(String msg) {
JOptionPane.showMessageDialog(null, msg,"たいとる",JOptionPane.INFORMATION_MESSAGE);
}
}
このメソッドを使う場面で引数のStringに、ダイアログ中で表示したい文字列を指定しましょう。ここでは”ファイルを選択してください(.xlsx)。”です。
showMessageDialogメソッドの引数のうち2-4番目のものは理解できる範囲だと思うのですが、1番目はparentComponentを引数に取ります。~~parentComponentが一体何なのか、調べてもわかりませんでしたが、~~基本nullでいいはずです。
”はい”、”いいえ”を選択させたい場合はshowMessageDialogではなく、showConfirmDialogメソッドを使います。
##ErrorDialog
ShowMessageDialogの第4引数をINFORMATION_MESSAGE、からERROR_MESSAGEに変えるだけで他は変わりません。
public class Main {
public static void main(String[] args) {
InfoDialog.ErrorDialog(".xlsxが未指定です。終了します。");
}
}
import javax.swing.JOptionPane;
class ErrorDialog {
public static void showDialog(String msg) {
JOptionPane.showMessageDialog(null, msg,"たいとる",JOptionPane.ERROR_MESSAGE);
}
}
#2.awt.FileDialog
ユーザーにファイルを選択させるダイヤログです。
public class Main {
public static void main(String[] args) {
new WindowTest();
File file = new File(WindowTest.dir + WindowTest.fileName);
}
}
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.event.WindowListener;
class WindowTest extends Frame implements WindowListener {
static String dir;
static String fileName;
WindowTest() {
FileDialog fileDialog = new FileDialog(this);
fileDialog.setVisible(true);
this.dir = fileDialog.getDirectory();
this.fileName = fileDialog.getFile();
if (fileName == null) {
ErrorDialog.showDialog(".xlsxが未指定です。終了します。");
System.exit(0);
}
}
public void windowActivated(java.awt.event.WindowEvent e) {
}
public void windowClosed(java.awt.event.WindowEvent e) {
}
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(1);
}
public void windowDeactivated(java.awt.event.WindowEvent e) {
}
public void windowDeiconified(java.awt.event.WindowEvent e) {
}
public void windowIconified(java.awt.event.WindowEvent e) {
}
public void windowOpened(java.awt.event.WindowEvent e) {
}
}
以上です。