Свинг не имеет такого животного, как текстовое поле - вы имеете в виду JTextField? Если да, то ...
- Вы бы создать JTextField просто делать только что -
new JTextField()
- Тогда бы добавить его в свой графический интерфейс, вызвав
add(...)
на соответствующем контейнере, таком как JPanel.
- Затем вы прочитали текст, просто набрав
getText()
, и JTextField tutorials объяснит все это.
- Вы также захотите прочитать руководство по менеджерам макетов, поскольку контейнер, который принимает JTextField, должен иметь макет, который может вместить новый компонент.
- Вы также захотите вызвать
revalidate()
и repaint()
на контейнер после добавления или удаления компонентов, чтобы менеджер компоновки контейнеров знал, чтобы обновить его макет и перекрасить.
Это всего лишь общая суть того, что необходимо сделать. Если вам требуется более конкретный совет, сообщите нам подробную информацию о своей проблеме, о том, что вы пробовали до сих пор, и что сработало или не удалось.
Редактировать
Вы спрашиваете:
Но как мне это сделать так, чтобы текстовое поле является «всплывал», а не дополнение к текущей емкости. У меня это так, что он добавляет к текущему контейнеру ... но это не то, что мне нужно.
- Самый простой способ сделать это, отображая JOptionPane.showInputDialog (...).
Например:
// myGui is the currently displayed GUI
String foo = JOptionPane.showInputDialog(myGui, "Message", "Title",
JOptionPane.PLAIN_MESSAGE);
System.out.println(foo);
Это будет выглядеть так:
- Более сложный способ сделать это, чтобы создать графический интерфейс и отобразить его в JOptionPane, и запрос GUI для его содержимого.
Например:
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());;
}
Какой будет выглядеть так:
@ user1261445: Там родственный пример [здесь] (http://stackoverflow.com/a/5812981/ 230513), который может начать работу с [sscce] (http://sscce.org/). – trashgod
Но как это сделать, чтобы textField был «всплывающим», а не добавлением к текущему контейнеру. У меня это так, что он добавляет к текущему контейнеру ... но это не то, что мне нужно. – user1261445
@ user1261445: см. Править, чтобы ответить выше. –