2016-03-03 19 views
-1

我是一個新手,並且我已經過了一些時間去了解這個想法,但是無法解決它,如果有人能幫助我的話。創建一個方法來在選定的JTabbedPane中添加組件

我主要有兩個JPanel在一個JFrame。我在第一個面板中有一些按鈕。我有一種方法,通過調用另一種方法來創建JPanels然後將其添加到Tab中,從而將面板添加到JTabbedPane

我想要一個方法,將任何按鈕/組件添加到選擇選項卡,我希望每當我點擊第一個面板上的按鈕。 我該怎麼做。如果有人希望幫助我,我可以在這裏發佈這三種方法的代碼。提前致謝。

第一代碼添加新的選項卡到JTabbedPane

private class TabPlus implements ActionListener { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      JPanel panel = CreateSlice(); 
      String title = "Slice " + String.valueOf(pane.getTabCount()); 
      pane.insertTab(title, null, panel, null, pane.getTabCount() - 1); 
     } 
    } 

第二個代碼是用於選擇的選項卡,

private class TabSelect implements ChangeListener { 
     @Override 
     public void stateChanged(ChangeEvent e) { 
      JTabbedPane source = (JTabbedPane) e.getSource(); 
      if (source.getSelectedComponent() != null) { 
       int index = source.getSelectedIndex(); 
       System.out.print(index); 
      } 

     } 
    } 

此創建JPanel要添加到所述JTabbedPane

public JPanel CreateSlice() { 

    JPanel Slice = new JPanel(); 
    Slice.setPreferredSize(new Dimension(550, 600)); 
    return Slice; 

} 

按鈕是我ñ另一個小組採取自己的行動。

GUI Image

+0

分享你的代碼,所以我們可以看看它。 – NAIT

+0

是的,但是這些按鈕位於另一個面板中,因此只要選中該按鈕,該按鈕的操作將在該選定選項卡上創建這些按鈕或任何其他組件(例如文本框,列表)。 – nothingSpecial

+0

爲什麼不按鈕,爲所有的JTabbedPane設置他們的虛擬度爲false,並且每當選擇JTabbedPane時,您都將可見性設置爲true。 – NAIT

回答

0

我想,我找到了一種方法來做到這一點,我的索引變量int index = source.getSelectedIndex();必須是公共變量,然後在Action的另一個選項卡中的按鈕將添加組件到這個選定的JTabbedPane

在我的情況下,我介紹和ArrayList面板(network_slices),並且我每次添加面板到JTabbedPane時,它也加入到ArrayList。然後我使用選定的JTabbedPane的索引從ArrayList調用面板。這是代碼的一部分。

private class TabSelect implements ChangeListener { 
    @Override 
    public void stateChanged(ChangeEvent e) { 
     JTabbedPane source = (JTabbedPane) e.getSource(); 
     if (source.getSelectedComponent() != null) { 
      index = source.getSelectedIndex(); 
      System.out.print(index); 
     } 
    } 
} 

private class AddTab implements ActionListener { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      Slice panel = new Slice(); 
      panel.setPreferredSize(new Dimension(550, 600)); 
      String title = "Slice " + String.valueOf(pane.getTabCount()); 
      pane.insertTab(title, null, panel, null, pane.getTabCount() - 1); 
      network_slices.add(panel); 
     } 
    } 

private class AddNetworkFuncitons implements ActionListener { 
     public void actionPerformed(ActionEvent e) { 
      String buttonselected = (String) e.getActionCommand(); 
      JButton button = new JButton(buttonselected); 
      network_slices.get(index).add(button).setVisible(true); 
      System.out.print(buttonselected); 

     } 
    } 
0

您可以添加面板butttons這樣:

public JPanel CreateSlice() { 

    JPanel Slice = new JPanel(); 
    Slice.setPreferredSize(new Dimension(550, 600)); 

    JPanel buttonsPanel = new JPanel(); 
    buttonsPanel.add(new JButton("dumpButton")); 
    buttonsPanel.setVisible(false); 
    Slice.add(buttonsPanel); 

    return Slice; 

} 

每當選擇時,設置buttonsPanel的能見度爲true。

+0

非常感謝我會嘗試這個,但我不希望製表符選擇會使此按鈕可見,我希望來自其他面板的按鈕將使此按鈕可見,但是在選定的選項卡面板中。 – nothingSpecial

+0

現在由您決定 – NAIT

+0

是的,我也可以通過'ActionListener'完成這個工作,但是如何在選定的標籤面板中完成這項工作呢? – nothingSpecial

相關問題