在循环内创建具有不同名称

时间:2015-11-30 23:43:32

标签: java swing jtextfield

是否可以在循环内创建多个具有不同名称的JTextFields? 我需要这样做,因为我后来需要得到每个文本,我需要做这样的事情:

while (sst_ResultSet.next()) {
    p_vertabla.add(new JLabel(sst_ResultSet.getString(1));
    p_vertabla.add(new JTextField(sst_ResultSet.getString(1)));
}

JLabelJTextField按照我希望的方式添加到JPanel p_vertabla时,此功能正常,但我不知道如何稍后调用.getText();上的方法JTextFields

如何在循环中创建JTextFields或如何在以后调用方法?

2 个答案:

答案 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)));
}

然后,您可以通过调用:

来访问任何JTextField
String 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));
    }

我真的希望它对很多人有用