JTextFieldとJButtonを備えたJFrameがあります。JOptionPane.showInputDialog()のように動作させたい。基本的には、それを作成してから、.start()などを呼び出して表示し、ボタンが押されるのを待ってから、JTextFieldの内容を返します。wait()/ notify()がこれを行う可能性があると聞きましたが、それが正しいかどうかはわかりません。正しい場合は、使用方法の簡単な例を見ることができますか?
2052 次
2 に答える
3
また、JDialogはカスタム入力ダイアログのソリューションであり、開発をスピードアップするのに役立つライブラリがあります。これはTaskDailogと呼ばれます。
詳細については、http://code.google.com/p/oxbow/wiki/TaskDialogIntroduction?tm=6をご覧ください。
于 2012-06-20T03:55:04.607 に答える
3
ここでは、次を使用してこのコード例を試してくださいJDialog
。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DialogExample extends JFrame
{
private JLabel nameLabel;
public DialogExample()
{
super("Dialog Example");
}
private void createAndDisplayGUI()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
nameLabel = new JLabel();
contentPane.add(nameLabel);
setContentPane(contentPane);
setSize(200, 100);
setLocationByPlatform(true);
setVisible(true);
MyDialog dialog = new MyDialog(this, "Credentials : ", true);
dialog.createAndDisplayGUI();
}
public void setName(String name)
{
if (name.length() > 0)
nameLabel.setText(name);
else
nameLabel.setText("Empty string received.");
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new DialogExample().createAndDisplayGUI();
}
});
}
}
class MyDialog extends JDialog
{
private JTextField nameField;
private JFrame frame;
public MyDialog(JFrame f
, String title, boolean isModal)
{
super(f, title, isModal);
frame = f;
}
public void createAndDisplayGUI()
{
JPanel contentPane = new JPanel();
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
JLabel nameLabel = new JLabel("Please Enter your Name : ");
nameField = new JTextField(10);
JButton submitButton = new JButton("SUBMIT");
submitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (nameField.getDocument().getLength() > 0)
frame.setName(nameField.getText());
else
frame.setName("");
MyDialog.this.dispose();
}
});
contentPane.add(nameLabel);
contentPane.add(nameField);
contentPane.add(submitButton);
add(contentPane);
pack();
setVisible(true);
}
}
于 2012-06-20T03:59:43.843 に答える