是否可以在循环内创建多个具有不同名称的JTextFields
?
我需要这样做,因为我后来需要得到每个文本,我需要做这样的事情:
while (sst_ResultSet.next()) {
p_vertabla.add(new JLabel(sst_ResultSet.getString(1));
p_vertabla.add(new JTextField(sst_ResultSet.getString(1)));
}
将JLabel
和JTextField
按照我希望的方式添加到JPanel
p_vertabla
时,此功能正常,但我不知道如何稍后调用.getText();
上的方法JTextFields
。
如何在循环中创建JTextFields
或如何在以后调用方法?
答案 0 :(得分:1)
您可以创建Vector<JTextField>
并在其中添加for循环中生成的项目:
while (sst_ResultSet.next()) {
p_vertabla.add(new JLabel(sst_ResultSet.getString(1));
createAndKeepJTextFieldInVector(sst_ResultSet.getString(1));
// instead of original: p_vertabla.add(new JTextField(sst_ResultSet.getString(1)));
}
然后,您可以通过调用:
来访问任何JTextFieldString txt = vector.get(index).getText();
答案 1 :(得分:0)
我在回答问题时稍微回答了我自己的问题,我发现没有必要为变量分配一个名称,0 VerifierDisableFaultInjectionExclusionRange C:\WINDOWS\syswow64\verifier.dll 0x53457378
1 VerifierDisableFaultInjectionExclusionRange C:\WINDOWS\syswow64\verifier.dll 0x53457495
2 VerifierDisableFaultInjectionExclusionRange C:\WINDOWS\syswow64\verifier.dll 0x5345b651
3 VerifierCheckPageHeapAllocation C:\WINDOWS\syswow64\verifier.dll 0x53460b12
4 ?? C:\WINDOWS\SysWOW64\vfbasics.dll 0x533d179f
5 msvcrt!free C:\WINDOWS\SysWOW64\msvcrt.dll 0x7509b0f9
6 ?? 0x19120000
7 ?? C:\WINDOWS\SysWOW64\vfbasics.dll 0x533d26a5
8 QArrayData::deallocate 130
9 QTypedArrayData<char>::deallocate 234 0x6b9cbcfd
10 QByteArray::resize 1448 0x6b79bc23
11 QRingBuffer::append 383 0x645893ae
12 QSerialPortPrivate::_q_completeAsyncRead 529 0x6458523f
13 QSerialPort::qt_static_metacall 353 0x64582dae
14 QMetaObject::activate 3681 0x6b955027
15 QMetaObject::activate 3547 0x6b95498c
16 QWinEventNotifier::activated 134 0x6b9ad529
17 QWinEventNotifier::event 241 0x6b976af1
18 QApplicationPrivate::notify_helper 3499 0xf33df61
19 QApplication::notify 2952 0xf33ba13
20 QCoreApplication::notifyInternal 935 0x6b929eee
... <More>
会起作用,重点是按照他们添加到ArrayList<JtextFiel>
的顺序,我能够检索与该特定位置的JPanel
相关联的信息。我做了这样的事情:
JTextField
然后要获得与列表相关的信息,我就这样做了:
ArrayList<JLabel> listadelabels = new ArrayList<JLabel>();
ArrayList<JTextField> listadetextfields = new ArrayList<JTextField>();
ArrayList<JCheckBox> listadecheckbox = new ArrayList<JCheckBox>();
...
Statement stmt=db.createStatement();
ResultSet sst_ResultSet = stmt.executeQuery(query);
JPanel p_obtenerregistro = new JPanel(new GridLayout(0,3));
while (sst_ResultSet.next()) {
listadelabels.add(new JLabel(sst_ResultSet.getString(1)));
listadetextfields.add(new JTextField(12));
listadecheckbox.add(new JCheckBox());
}
for(int i=0 ; i<listadelabels.size(); i++){
listadecheckbox.get(i).addItemListener(this);
p_obtenerregistro.add(listadecheckbox.get(i));
p_obtenerregistro.add(listadelabels.get(i));
listadetextfields.get(i).setEditable(false);
p_obtenerregistro.add(listadetextfields.get(i));
}
我真的希望它对很多人有用