シンプルな Swing Java アプリケーションを構築しています。JFrame と JPanel が含まれています。JPanel のコンストラクターには、渡すパラメーターが 1 つ必要です。ユーザーがこの変数を入力できるようにしたいと考えています。これで、アプリが起動したので、このパラメーターをコードで渡す必要があります。私の目標は、JPanel(およびおそらくJFrame)が開始する前に、「数字を選択してください」という質問を含む小さなウィンドウが表示され、1から10までの数字のリストを選択し、ユーザーが1つを選択してボタンを押すと、この値が渡される必要があることですmyJPanel のコンストラクターに追加します。
それを達成する方法は?
JFrame のコード:
public class MainWindow extends JFrame {
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow frame = new MainWindow();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public MainWindow() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 542, 455);
myJPanel panel1 = new JPanel(4); // HERE
add(panel1);
}
}
編集
それを行うよりエレガントな方法はありますか?: ] 文字列に変換してから int に変換したくありません。
また、ユーザーが [キャンセル] ボタンをクリックした場合にアプリ全体を閉じる方法は?
Object[] possibleSizes = { 3, 4, 5, 6, 7 };
Object selectedValue = JOptionPane.showInputDialog(null,
"Choose a number", "Uwaga!",
JOptionPane.INFORMATION_MESSAGE, null,
possibleSizes, possibleSizes[0]);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 542, 455);
MyJPanel panel1 = new MyJPanel(Integer.parseInt(selectedValue.toString()); // HERE
add(panel1); 1);