我需要在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);
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);
然后,当用户点击“确定”按钮时,我不知道如何获取值:
if (result == 0) { // The user clicks on the ok button
答案 0 :(得分:1)
您需要将它们添加到您存储的某个列表中,以便您可以再次访问它们。由于您是在引用应用程序时添加它们,我建议使用Map
getNouvellesNaturesFields()
然后,当用户点击确认按钮时,使用属性访问者getVersionActuelleFields()
或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();
}
}
或者您也可以通过以下方式获取它们:
data.table
由于键值可能不会是唯一的,我使用的是ArrayListMultiMap
,但如果它是唯一的,则HashMap
就足够了
答案 1 :(得分:0)
使用getText()方法将Jtextfield值分配给字符串,例如
String texfield = JTextField.getText();
随后,您可以在任何位置使用String文本字段。要获得正确的jtextfield,您必须从所需的文本字段中获取文本,例如,您有四个Jtexfield。假设它们是JTextField1,JTextField2,JTextField3和JTextField4。要获得JTextField3的值,您需要
String texfield = JTextField3.getText();
答案 2 :(得分:0)
值应该在您创建的JTextField中:
versionActuelleField
nouvellesNaturesField
此外,您可能希望查看ParamDialog,我将其视为此问题的通用解决方案。
是的,我现在看到您正在循环中创建这些JTextFields
。所以你需要创建一个Collection
,我建议你Map<String, JTextField>
,你可以将所有的应用程序名称映射到匹配的JTextField
,并迭代集合以获得所有应用程序名称/ JTextFields
。