0
 private void buttonAddJobActionPerformed(java.awt.event.ActionEvent evt) {                                             

   try {  

       retrieveID();
       String sqlStm = "INSERT INTO Job (employerID,title,description,type,salary,benefits,vacancies,closing,requirement,placement,applyTo,status,posted,location) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 


       pst = conn.prepareStatement(sqlStm);
       pst.setInt(1,id);
       pst.setString(2,txtTitle.getText());
       pst.setString(3,areaDescription.getText());
       pst.setString(4,comboType.getSelectedItem().toString());
       pst.setString(5,txtSalary.getText());
       pst.setString(6,areaBenefits.getText());
       pst.setString(7,txtVac.getText());
       Date close; 
       close = txtDate.getDate();
       pst.setString(8,sdf.format(close));
       pst.setString(9,areaReq.getText());
       pst.setString(10,comboPlace.getSelectedItem().toString());
       pst.setString(11,txtWeb.getText());
       pst.setString(12,comboStatus.getSelectedItem().toString());
       Date now = new Date();   
       pst.setString(13,sdf.format(now));
       pst.setString(14,txtLoc.getText());
       pst.executeUpdate();
       JOptionPane.showMessageDialog(null,"You have successfully added a job");
       //empty all JTextfields
       //switch to another 

我正在尝试清空JTextFieldsJPanel 中的集合,但不是一个一个清空它们,我可以刷新面板吗?如果是这样,你如何做到这一点。我试过了repaint()revalidate()这些不起作用。也许我在这里错了。我也想切换JTabbedPane到另一个窗格,但是当我尝试使用这个时这不起作用......

JTabbedPane sourceTabbedPane = (JTabbedPane) evt.getSource();
       sourceTabbedPane.setSelectedIndex(0);

有人可以展示一个示例代码如何做到这一点。

4

2 回答 2

2

您可以遍历面板中包含的所有组件,如果它们是文本组件,则清除它们的值。代码将是这样的:

private void clearTextFields(Container container)
{
    int count = container.getComponentCount();
    for (int i = 0; i < count; i++)
    {
        Component component = container.getComponent(i);
        if (component instanceof Container) {
            clearTextFields((Container) component);
        }
        else if (component instanceof JTextComponent) {
            ((JTextComponent) component).setText("");
        }
    }
}

当您的面板包含另一个包含文本字段的面板时,此方法以递归方式工作并处理这种情况。

于 2013-01-10T11:57:51.453 回答
1

将所有 JTextField 保存在一个容器中,然后遍历该容器以清空它们。所以,某处:

ArrayList<JTextField> textFields = new ArrayList<JTextField>();

在实际创建所有字段之后(使用JTextField txtTitle = new JTextField()或类似):

textFields.add(txtTitle);
textFields.add(areaDescription); 
// ... add all others here

最后,当您需要清除它们时:

for (JTextField tf : textFields) {
    tf.setText("");
}
于 2013-01-10T11:57:41.113 回答