2011-06-21 16 views
6

के आधार पर यूआई को कैसे बदलें, संवाद में मुझे कुछ कॉम्बो चेक किए जाने पर नियंत्रण के एक समूह को प्रदर्शित करने की आवश्यकता है और नियंत्रण के दूसरे समूह को अन्यथा। आईई। मुझे 2 परतों की आवश्यकता है और मुझे कॉम्बो चेक/अनचेक होने पर उनके बीच स्विच करने की आवश्यकता है। मैं उसे कैसे कर सकता हूँ?कॉम्बो बॉक्स चयन

धन्यवाद

+0

क्या मंच और भाषा? –

उत्तर

14

CardLayout इस के लिए अच्छी तरह से काम करता है, के रूप में नीचे का सुझाव दिया।

enter image description here

import java.awt.BorderLayout; 
import java.awt.CardLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Random; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

/** @see http://stackoverflow.com/questions/6432170 */ 
public class CardPanel extends JPanel { 

    private static final Random random = new Random(); 
    private static final JPanel cards = new JPanel(new CardLayout()); 
    private static final JComboBox combo = new JComboBox(); 
    private final String name; 

    public CardPanel(String name) { 
     this.name = name; 
     this.setPreferredSize(new Dimension(320, 240)); 
     this.setBackground(new Color(random.nextInt())); 
     this.add(new JLabel(name)); 
    } 

    @Override 
    public String toString() { 
     return name; 
    } 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       create(); 
      } 
     }); 
    } 

    private static void create() { 
     JFrame f = new JFrame(); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     for (int i = 1; i < 9; i++) { 
      CardPanel p = new CardPanel("Panel " + String.valueOf(i)); 
      combo.addItem(p); 
      cards.add(p, p.toString()); 
     } 
     JPanel control = new JPanel(); 
     combo.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       JComboBox jcb = (JComboBox) e.getSource(); 
       CardLayout cl = (CardLayout) cards.getLayout(); 
       cl.show(cards, jcb.getSelectedItem().toString()); 
      } 
     }); 
     control.add(combo); 
     f.add(cards, BorderLayout.CENTER); 
     f.add(control, BorderLayout.SOUTH); 
     f.pack(); 
     f.setLocationRelativeTo(null); 
     f.setVisible(true); 
    } 
} 
+1

किक JComboBox + CardLayout +1 – mKorbel

+2

के लिए धन्यवाद यह संबंधित [उदाहरण] देखें (http://stackoverflow.com/questions/5654926/implementing-back-forward-buttons-in-swing/5655843#5655843)। – trashgod

+0

यह उदाहरण नाम जोड़ने के लिए 'जेपीनेल' बढ़ाता है, लेकिन ['घटक '] (http://download.oracle.com/javase/6/docs/api/java/awt/Component.html) में' getName() है 'और 'setName()' विधियों को वैकल्पिक के रूप में। – trashgod

संबंधित मुद्दे