Newer
Older
IoTP / src / main / java / info / istlab / IoTP / MyDialog.java
@motoki miura motoki miura on 26 Feb 2023 2 KB Dir selector
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);
    }
}