2012-08-02 44 views
-2

我寫了一個應用程序,它連接到多個數據庫(檢查link)。我分別有幾個包含帶有INPUT文本框的查詢面板的選項卡。現在我想要到達選定選項卡中的特定文本字段以查詢相關數據庫......請讓我現在瞭解如何實現它?當我的應用程序有幾個相同的選項卡時,如何到達選項卡中的組件?(如何確定活動選項卡?)

我要指出,我已經創建了一個應該被添加到JTabbedPane的如下JPanel的一類:

package testGUI_V2; 

import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextField; 
import javax.swing.JTextPane; 
import javax.swing.SwingConstants; 
import javax.swing.border.BevelBorder; 
import static testGUI_V2.DialogBoxTest.service; 

public class TabbedPane { 
private String state; 
private JLabel jLabel3; 
private JTextField jTextField2; 
private JTextPane jTextPane1; 
private JButton jButton4; 
private static int item = 0; 
private int tabIndex; 

public JPanel CreatePanel(){ 
    state = service.toUpperCase(); 
    tabIndex = item; 
    JPanel inst1 = new JPanel(); 
    String tabTitle =String.format("Query Panel %d",item+1); 
    inst1.setSize(302, 138); 
    inst1.setLayout(null); 
    inst1.setBorder(BorderFactory 
        .createTitledBorder(BorderFactory 
        .createEtchedBorder(BevelBorder.LOWERED), tabTitle)); 
    inst1.setPreferredSize(new java.awt.Dimension(321, 108)); 

     jLabel3 = new JLabel("Employee ID", SwingConstants.LEFT); 
     inst1.add(jLabel3); 
     jLabel3.setBounds(12, 15, 103, 26); 
     jLabel3.setVisible(true); 

     jTextField2 = new JTextField(); 
     inst1.add(jTextField2); 
     jTextField2.setVisible(true); 
     jTextField2.setBounds(109, 15, 93, 30); 

     jTextPane1 = new JTextPane(); 
     inst1.add(jTextPane1); 
     jTextPane1.setBounds(6, 50, 307, 50); 

     jButton4 = new JButton("Search"); 
     inst1.add(jButton4); 
     jButton4.setVisible(true); 
     jButton4.setBounds(231, 15, 82, 29); 
     //jButton4.addActionListener(search); 

     item++; 
     return inst1; 
} 
public JTextField getQueryJTextField(){ 
    return jTextField2; 
} 
public String getPanelState(){ 
    return state; 
} 
public int getTabIndex(){ 
    return tabIndex; 
} 
} 

此外,下面的代碼都與「連接」按鈕,它調用createPanel ()方法TabbedPane類別:

  { 
      jButton2 = new JButton(); 
      getContentPane().add(jButton2); 
      jButton2.setText("Connect"); 
      jButton2.setBounds(229, 50, 90, 29); 
      jButton2.setVisible(false); 
      jButton2.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent evt) { 
        LinkedFrame inst2 = new LinkedFrame(inst, true); 
        inst2.setLocationRelativeTo(rootPane); 
        inst2.setVisible(true); 
        if (Connector.getProcessStatue()) { 
         TabbedPane inst= new TabbedPane(); 
         jPanel3.setVisible(true); 
         tabbedPane1.addTab(connectionItem,null ,info.get(inst.getTabIndex())); 
         info.add(inst.CreatePanel()); 
         System.out.println(inst.getPanelState()); 
         jButton2.setVisible(false); 
         jButton3.setVisible(true); 
         setSize(342, 265); 
        } 

       } 
      }); 
     } 

請讓我知道我的策略是否屬實?

+0

您能否澄清一下這個問題與您之前關於此主題的不同之處[如何動態創建多個選項卡?](http://stackoverflow.com/questions/11740048/how-to-create-several-tabs-動態)請編輯您的問題,以包含一個[sscce](http://sscce.org/),以顯示問題。 – trashgod 2012-08-02 23:44:44

+0

在我以前的問題中,我正在尋找一種解決方案在我的應用程序中創建多個選項卡....它已解決,我已將它們放入我的APP中,但現在當有多個選項卡時,無法到達面板中的文本框。 .. :( – msc87 2012-08-02 23:58:39

回答

1

我幾乎總是爲我的GUI編程創建JPanel的子類。當我需要訪問組件以備後用,我也一定要保持我的JPanel類對這些組件的引用,並提供存取方法的數據我希望檢索:

public class MyPanel extends JPanel { 
    private JTextField myTextField = new JTextField(); 

    String getText() { 
    return myTextField.getText(); 
    } 
} 
JFrame的

,我也創建子類舉行我的自定義面板。而作爲與JPanel的子類,我將保持私有引用到我的自定義面板的實例:

public class MyFrame extends JFrame { 
    private MyPanel myPanel = new MyPanel(); 

    public MyFrame() { 
    this.add(myPanel); 

    JButton someButton = new JButton("Do It!"); 
    someButton.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
     String text = MyFrame.this.myPanel.getText(); 

     // Do something with the text 
     } 
    }); 
    } 
} 

含MyPanel的實例類可以是任何東西,而不僅僅是一個JFrame。不過,基本概念適用:子類Swing組件,並保留創建後需要訪問的組件的引用。

+0

感謝您的幫助....請考慮到這一點,應該有幾個標籤,每個標籤都有自己的搜索按鈕...所以我必須以這樣的方式創建面板,以便我可以區分每個面板,並達到自己的搜索按鈕...請給我一個解決方案如何處理這個問題?!!! – msc87 2012-08-04 09:36:09

+0

請編輯您的問題或要求一個新的我們誰已經嘗試到目前爲止 – 2012-08-04 16:42:17

+0

是控制每個標籤是相同還是不同? – 2012-08-04 16:44:32

相關問題