package info.istlab.IoTP; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class MyDialog extends JDialog { private JTextField textField; private JButton okButton, cancelButton; private boolean okClicked; public MyDialog(JFrame parent) { super(new JFrame(), "モードレスダイアログ", true); // ダイアログのコンポーネントを設定する JLabel label = new JLabel("名前を入力してください:"); textField = new JTextField(10); JPanel panel = new JPanel(); panel.add(label); panel.add(textField); okButton = new JButton("OK"); cancelButton = new JButton("キャンセル"); JPanel buttonPanel = new JPanel(); buttonPanel.add(okButton); buttonPanel.add(cancelButton); getContentPane().setLayout(new BorderLayout()); getContentPane().add(panel, BorderLayout.CENTER); getContentPane().add(buttonPanel, BorderLayout.SOUTH); // OKボタンが押されたときの処理 okButton.addActionListener(e -> { okClicked = true; dispose(); }); // キャンセルボタンが押されたときの処理 cancelButton.addActionListener(e -> { okClicked = false; dispose(); }); // ダイアログのサイズを設定する setSize(300, 150); } public boolean showDialog() { okClicked = false; setVisible(true); return okClicked; } public String getInputValue() { return textField.getText(); } public static void main(String[] args) { JFrame frame = new JFrame("親ウィンドウ"); frame.setSize(400, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ボタンを追加する JButton button = new JButton("ダイアログを表示する"); button.addActionListener(e -> { MyDialog dialog = new MyDialog(frame); if (dialog.showDialog()) { String inputValue = dialog.getInputValue(); System.out.println("OKボタンが押されました。入力値は" + inputValue + "です。"); } else { System.out.println("キャンセルボタンが押されました。"); } }); frame.getContentPane().add(button); // ウィンドウを表示する frame.setVisible(true); } }