2013-06-19 31 views
0

我有4個JPanel。在其中一個面板中,我有一個組合框。在組合框中選擇「值A」時,應顯示Panel2。類似地,如果我選擇「值B」,則應選擇面板3 ...Java Swings選項卡

雖然動作監聽器應該在此上下文中使用。如何在該操作偵聽器中調用另一個選項卡。

public class SearchComponent 
     { 
      .... 

    . 


     public SearchAddComponent(....) 
     { 
     panel = addDropDown(panelList(), "panel", gridbag, h6Box); 
       panel.addComponentListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 



           ItemSelectable is = (ItemSelectable)actionEvent.getSource(); 
       Object name=selectedString(is); 

        } 


     }); 

      } 

     public static final Vector<String> panelList(){ 

       List<String> panelList = new ArrayList<String>(); 
       panelList.add("A"); 
       panelList.add("B"); 
       panelList.add("C"); 
       panelList.add("D"); 
       panelList.add("E"); 
       panelList.add("F); 

       Vector<String> panelVector = null; 
       Collections.copy(panelVector, panelList); 
       return panelVector; 
      } 



public Object selectedString(ItemSelectable is) { 
    Object selected[] = is.getSelectedObjects(); 
    return ((selected.length == 0) ? "null" : (ComboItem)selected[0]); 
    } 

     } 
+0

請表明你的代碼,ü迄今所做.... –

回答

1

試試這個代碼:

import java.awt.EventQueue; 
import java.awt.BorderLayout; 
import java.awt.CardLayout; 
import java.awt.Color; 
import javax.swing.BorderFactory; 
import javax.swing.border.Border; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JComboBox; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.SwingConstants; 
import java.awt.Container; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 

public class CardLayoutExample { 
JFrame guiFrame; 
CardLayout cards; 
JPanel cardPanel; 


public static void main(String[] args) { 

    //Use the event dispatch thread for Swing components 
    EventQueue.invokeLater(new Runnable() 
    { 

     @Override 
     public void run() 
     { 

      new CardLayoutExample();   
     } 
    }); 

} 

public CardLayoutExample() 
{ 
    guiFrame = new JFrame(); 

    //make sure the program exits when the frame closes 
    guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    guiFrame.setTitle("CardLayout Example"); 
    guiFrame.setSize(400,300); 

    //This will center the JFrame in the middle of the screen 
    guiFrame.setLocationRelativeTo(null); 
    guiFrame.setLayout(new BorderLayout()); 

    //creating a border to highlight the JPanel areas 
    Border outline = BorderFactory.createLineBorder(Color.black); 

    JPanel tabsPanel = new JPanel(); 
    tabsPanel.setBorder(outline); 
    JButton switchCards = new JButton("Switch Card"); 
    switchCards.setActionCommand("Switch Card"); 
    switchCards.addActionListener(new ActionListener() 
    { 
     @Override 
     public void actionPerformed(ActionEvent event) 
     { 
      cards.next(cardPanel); 
     } 
    }); 
    tabsPanel.add(switchCards); 

    guiFrame.add(tabsPanel,BorderLayout.NORTH); 


    cards = new CardLayout(); 
    cardPanel = new JPanel(); 
    cardPanel.setLayout(cards); 
    cards.show(cardPanel, "Fruits"); 

    JPanel firstCard = new JPanel(); 
    firstCard.setBackground(Color.GREEN); 
    addButton(firstCard, "APPLES"); 
    addButton(firstCard, "ORANGES"); 
    addButton(firstCard, "BANANAS"); 

    JPanel secondCard = new JPanel(); 
    secondCard.setBackground(Color.BLUE); 
    addButton(secondCard, "LEEKS"); 
    addButton(secondCard, "TOMATOES"); 
    addButton(secondCard, "PEAS"); 

    cardPanel.add(firstCard, "Fruits"); 
    cardPanel.add(secondCard, "Veggies"); 

    guiFrame.add(tabsPanel,BorderLayout.NORTH); 
    guiFrame.add(cardPanel,BorderLayout.CENTER); 
    guiFrame.setVisible(true); 
} 

//All the buttons are following the same pattern 
//so create them all in one place. 
private void addButton(Container parent, String name) 
{ 
    JButton but = new JButton(name); 
    but.setActionCommand(name); 
    parent.add(but); 
} 
} 
+0

-1,這是怎麼回事代碼比教程中的代碼更好?本教程包含對代碼的解釋,並且還使用了組合框,這是組合框的一部分。沒有必要混淆與重複的答案論壇。 – camickr