Java 在ActionPerfmored中刷新JPanel并切换JTabbedPane

Java 在ActionPerfmored中刷新JPanel并切换JTabbedPane,java,swing,user-interface,jpanel,jtextfield,Java,Swing,User Interface,Jpanel,Jtextfield,我试图清空JPanel中的JTextFields集合,但是我可以刷新面板而不是逐个清空它们吗?如果是的话,你是如何做到这一点的。我尝试了repaint(),revalidate()这些都不起作用。也许我错了。 我还想将JTabbedPane切换到另一个窗格,但是当我尝试使用这个时,它不起作用 private void buttonAddJobActionPerformed(java.awt.event.ActionEvent evt) {

我试图清空JPanel中的
JTextFields
集合,但是我可以刷新面板而不是逐个清空它们吗?如果是的话,你是如何做到这一点的。我尝试了
repaint()
revalidate()
这些都不起作用。也许我错了。 我还想将
JTabbedPane
切换到另一个窗格,但是当我尝试使用这个时,它不起作用

 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 

有人能给我一个示例代码来说明如何做到这一点吗

将所有JTextFields保存在一个容器中,并在该容器上迭代以清空它们。 所以,在某个地方:

JTabbedPane sourceTabbedPane = (JTabbedPane) evt.getSource();
       sourceTabbedPane.setSelectedIndex(0);
最后,当您需要全部清除它们时:

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

将所有JTextFields保存在一个容器中,并在该容器上迭代以清空它们。 所以,在某个地方:

JTabbedPane sourceTabbedPane = (JTabbedPane) evt.getSource();
       sourceTabbedPane.setSelectedIndex(0);
最后,当您需要全部清除它们时:

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

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

for (JTextField tf : textFields) {
    tf.setText("");
}
private void clearTextFields(容器)
{
int count=container.getComponentCount();
for(int i=0;i

此方法递归工作,并处理面板包含另一个包含文本字段的面板的情况。

您可以循环遍历面板中包含的所有组件,如果它们是文本组件,请清除它们的值。代码如下所示:

for (JTextField tf : textFields) {
    tf.setText("");
}
private void clearTextFields(容器)
{
int count=container.getComponentCount();
for(int i=0;i

此方法递归工作,并处理面板包含另一个包含文本字段的面板的情况。

如果所有文本字段都直接放置在父组件中,则回答得非常好,否则,您将不得不递归到swing容器中。我喜欢这样,我们如何更动态地包含不仅仅是JTextComponent,由于父组件由
JTextArea
JComboBox
以及一个附加的
JDateChoose
@MuminAli组成,因此您应该添加更多的
,否则如果
案例,以反映重置对这些案例的意义too@mavroprovato你能调整你的答案以反映面板addJobPanel而不是使用component这个词吗,所以你通过了addJobPanelreference@mavroprovato我应该传递什么作为论点?我的面板?非常好的回答,如果所有文本字段都直接放在父组件中,否则,您将不得不递归到swing容器中。我喜欢这样,既然父组件由
JTextArea
组成,那么我们怎么能更动态地包含JTextComponent而不仅仅是JTextComponent呢,
JComboBox
以及添加的
JDateChoose
@MuminAli您应该添加更多的
,否则如果
案例,以反映重置对这些案例的意义too@mavroprovato你能调整你的答案以反映面板addJobPanel而不是使用component这个词吗,所以你通过了addJobPanelreference@mavroprovato我应该传递什么作为论点?我的小组?为了更快地得到更好的帮助,发布一个。为了更快地得到更好的帮助,发布一个。