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 

JPanel でのセットを空にしようとしていますが、JTextFields1 つずつ空にする代わりに、パネルを更新することはできますか? もしそうなら、どうやってこれをしますか。私は試しましたが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 に答える