-3

ここでの最初のコードは、私が理解できないメインコードの prerec からのものです。

boolean CompanyLoaded, StartingNum = true;

FirstCheck newwin = new FirstCheck();

public CollectNumbers() { 

        if (StartingNum = true) firstCheck = newwin.FirstCheck(); <----Runs FirstCheck okay

        if (CompanyLoaded = true) LoadCompany();

ここから先は、FirstCheck クラスがあり、以下に投稿します。actionPerformed の抽象オーバーライドを試みました。スレッドのスリープ、待機を試みましたが、actionPerformed() が文字列 (Int) を返すまで FirstCheck() メソッドを待機させる方法がわかりません。どんな助けでも大歓迎です!

import java.awt.event.*;

import java.awt.*;

import javax.swing.*;

import java.io.*;

import java.util.*;

abstract class FirstCheck extends JFrame implements ActionListener {

    static int num;
    static boolean bnum = true;
    JTextField NumberEntry;

    Toolkit   tools   = Toolkit.getDefaultToolkit();
    Dimension windowLocVar = tools.getScreenSize(); 


    public int FirstCheck() {

        JFrame frame = new JFrame();

        NumberEntry = new JTextField();

        JButton Done = new JButton("Done");
        Done.addActionListener(this);

        JLabel label = new JLabel("Starting Check Number?");
        label.setVerticalTextPosition(JLabel.BOTTOM);  
        label.setHorizontalTextPosition(JLabel.CENTER);

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(3,1));
        panel.add(NumberEntry);
        panel.add(label);
        panel.add(Done); 

        frame.add(panel);                       
        frame.pack();                                      
        frame.setVisible(true);                            
        frame.setSize(250,150);                            
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setLocation(windowLocVar.width/2-300,windowLocVar.height/2-100);


        //try {
        //  Thread.sleep(5000);
        //  } 
        //catch(InterruptedException e) {
        //  // Restore the interrupted status
        //  Thread.currentThread().interrupt();
        //  }



    }



    public int actionPerformed(ActionEvent e) {
               bnum = false;
               num = Integer.parseInt(NumberEntry.getText());
               return num;

    }


    }
4

1 に答える 1

2

JFrame frame = new JFrame()使用する代わりにJDialog frame = new JDialog((Frame)null, true)

frame.setVisible(true)これにより、モーダル ダイアログが作成され、ダイアログが閉じられるまで の時点でコードの実行がブロックされます。

詳細については、ダイアログの使用方法をご覧ください。

actionPerformedメソッドでは、ダイアログが閉じられたときにアプリケーションが問い合わせることができる「戻り値」を保存する必要があります...

public void actionPerformed(ActionEvent e) {
    bnum = false;
    num = Integer.parseInt(NumberEntry.getText());
    Object source = e.getSource();
    if (source instanceof Component) {
        // Close the dialog....
        SwingUtilities.getWindowAncestor((Component)source).dispose();
    }
}

更新しました

同様に、代わりに a を使用することもできますJOptionPane...

を見てみましょう

いくつかの例として

于 2013-02-13T23:17:13.890 に答える