我知道您可以通过键入来创建一个按钮
JButton x= new JButton("Something");
x.addActionListener(this);
但是我如何制作一个动作监听器,以便按钮为用户创建一个文本字段以提供输入......以及如何从该文本框中读取文本?
我知道您可以通过键入来创建一个按钮
JButton x= new JButton("Something");
x.addActionListener(this);
但是我如何制作一个动作监听器,以便按钮为用户创建一个文本字段以提供输入......以及如何从该文本框中读取文本?
Swing 没有文本框这样的动物——你是说 JTextField 吗?如果是这样,...
new JTextField()
add(...)
然后通过调用适当的容器(例如 JPanel)将其添加到您的 GUI 。getText()
它即可阅读文本, JTextField 教程将解释所有这些。revalidate()
和repaint()
,以便容器布局管理器知道更新其布局并重新绘制自身。这只是需要做的事情的一般要点。如果您需要更具体的建议,请告诉我们您的问题的详细信息、到目前为止您尝试过的方法以及有效或失败的方法。
编辑
你问:
但是我该怎么做才能使 textField 成为“弹出”而不是当前容器的添加。我有它,以便它添加到当前容器中......但这不是我需要的。
例如:
// myGui is the currently displayed GUI
String foo = JOptionPane.showInputDialog(myGui, "Message", "Title",
JOptionPane.PLAIN_MESSAGE);
System.out.println(foo);
这看起来像这样:
例如:
JTextField fooField = new JTextField(15);
JTextField barField = new JTextField(15);
JPanel moreComplexPanel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(5, 5, 5, 5);
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.WEST;
moreComplexPanel.add(new JLabel("Foo:"), gbc);
gbc.gridx = 1;
gbc.anchor = GridBagConstraints.EAST;
moreComplexPanel.add(fooField, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.anchor = GridBagConstraints.WEST;
moreComplexPanel.add(new JLabel("Bar:"), gbc);
gbc.gridx = 1;
gbc.anchor = GridBagConstraints.EAST;
moreComplexPanel.add(barField, gbc);
int result = JOptionPane.showConfirmDialog(myGui, moreComplexPanel,
"Foobars Forever", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE);
if (result == JOptionPane.OK_OPTION) {
System.out.println("foo = " + fooField.getText());;
System.out.println("bar = " + barField.getText());;
}
看起来像: