0

ファイルを選択すると、うまくいけばファイルパスの文字列が返される簡単なプログラムを作成しました。ここで何が間違っているのかよくわかりません。

public static String createWindow() {

    JFrame.setDefaultLookAndFeelDecorated(true);
    JDialog.setDefaultLookAndFeelDecorated(true);
    JFrame frame = new JFrame("JComboBox Test");
    frame.setLayout(new FlowLayout());
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton inbutton = new JButton("Select Input File");

    inbutton.addActionListener(new ActionListener() {

       String imagePath;

       public void actionPerformed(ActionEvent ae) {
          JFileChooser fileChooser = new JFileChooser();
          int returnValue = fileChooser.showOpenDialog(null);
          if (returnValue == JFileChooser.APPROVE_OPTION) {
             File selectedFile = fileChooser.getSelectedFile();
             imagePath = selectedFile.getPath();
          }
       }
    });

    frame.add(inbutton);
    frame.pack();
    frame.setVisible(true);
    return imagePath;
}
4

1 に答える 1

2

メソッドが呼び出されたときにすぐに値を返そうとしていますが、何らかのイベントが発生するまで結果は利用できません。あなたの論理はオフです。あなたがすべきことは、JFrameではなくモーダルダイアログにボタンを表示することです。ダイアログのモダリティは、ダイアログが表示された時点からダイアログが表示されなくなるまで、プログラム フローを効果的に一時停止します。

于 2013-05-26T21:20:03.533 に答える