Java 在对话框中单击“确定”时获取Jtextfields的值
我需要在JDialog(confirmDialog或inputDialog)中显示一个选项卡。该选项卡每行包含2个JTextField。显示器工作正常: 但我不知道如何获取JTextFields的值 以下是显示代码:Java 在对话框中单击“确定”时获取Jtextfields的值,java,swing,jdialog,Java,Swing,Jdialog,我需要在JDialog(confirmDialog或inputDialog)中显示一个选项卡。该选项卡每行包含2个JTextField。显示器工作正常: 但我不知道如何获取JTextFields的值 以下是显示代码: int size = model.getCheckedApplications().size(); // une ligne par application sélectionnée layout = new GridLayout(size + 1, 3, 5, 5); myPa
int size = model.getCheckedApplications().size();
// une ligne par application sélectionnée
layout = new GridLayout(size + 1, 3, 5, 5);
myPanel = new JPanel(layout);
myPanel.add(new JLabel("Application"));
myPanel.add(new JLabel("Version cadre"));
myPanel.add(new JLabel("Nouvelles natures"));
for (Application app : model.getCheckedApplications()) {
myPanel.add(new JLabel(app.getCode88()));
JTextField versionActuelleField = new JTextField(30);
versionActuelleField.setName("versionActuelle"
+ app.getCode88());
versionActuelleField.setText(app
.getVersionCadreActuelle());
JTextField nouvellesNaturesField = new JTextField(
30);
nouvellesNaturesField.setName("nouvellesNatures"
+ app.getCode88());
myPanel.add(versionActuelleField);
myPanel.add(nouvellesNaturesField);
}
result = JOptionPane.showConfirmDialog(null, myPanel,
"Valeurs de cette version",
JOptionPane.OK_CANCEL_OPTION);
然后,当用户单击OK按钮时,我不知道如何获取值:
if (result == 0) { // The user clicks on the ok button
您可以使用getText()方法将Jtextfield值分配给字符串,例如
String texfield = JTextField.getText();
随后,您可以在任何需要的地方使用字符串文本字段。为了得到正确的jtextfield,您必须从您想要的textfield中获取文本,例如,您有四个Jtexfield。假设它们是JTextField1、JTextField2、JTextField3和JTextField4。要获得JTextField3的值,您必须
String texfield = JTextField3.getText();
这些值应位于您创建的JTextFields中: VersionActuellelField
新自然场 另外,您可能想看看,我实现了一个通用的解决方案来解决这个问题 编辑
是的,我现在看到您正在循环中创建这些
JTextFields
。因此,您需要创建一个集合
,我建议创建一个映射
,您可以将所有应用程序名称映射到匹配的JTextField
,并在集合上迭代以获得所有应用程序名称/JTextFields
您需要将它们添加到存储的某个列表中,以便再次获取它们。由于您是在引用应用程序时添加它们,因此我建议
或者,您也可以通过以下方式获取:
for (Application app : model.getCheckedApplications()) {
List<JTextField> data = myMap.get(app);
for(JTextField field : data) {
field.getText();
}
}
(应用程序应用程序:model.getCheckedApplications())的{
列表数据=myMap.get(应用程序);
for(JTextField字段:数据){
field.getText();
}
}
由于键值可能不是唯一的,所以我使用了,但如果它是唯一的,那么a就足够了。
JTextField.getText()
???@MatthewDiana是的,但如何才能获得正确的JTextField?1)要更快地获得更好的帮助,请发布或。2) 最好在显示选项窗格时传递父组件。这样,在关闭选项窗格之前,用户无法与(父)GUI交互。OP无法访问这些字段,因为它们是在for循环中创建的,问题是,它们没有在任何地方存储对这些字段的引用,并且在退出hashmap解决方案的循环时丢失,应用程序代码在key中,值为2 JTextField的数组在我的上下文中工作得非常好。谢谢
for (Map.Entry<Application, JTextField> entry: myMap.entries()) {
//Do something here
}
for (Application app : model.getCheckedApplications()) {
List<JTextField> data = myMap.get(app);
for(JTextField field : data) {
field.getText();
}
}