Вкладка выбора Java Swings

У меня есть 4 панели JPanel. На одной из панелей у меня есть поле со списком. При выборе «Значение A» в поле со списком должна отображаться панель 2. Аналогично, если я выбираю «Значение B», должна быть выбрана панель 3....

Хотя в этом контексте следует использовать прослушиватель действий. Как сделать вызов другой вкладки с помощью этого прослушивателя действий.

    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]);
  }

        }

person karthik    schedule 19.06.2013    source источник
comment
Пожалуйста, покажите свой код, который вы сделали до сих пор....   -  person Michael Shrestha    schedule 19.06.2013


Ответы (2)


Используйте Card Layout. См. учебник по Swing Как использовать макет карточки для рабочий пример.

person camickr    schedule 19.06.2013

Попробуйте этот код:

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);
}
}
person karthi    schedule 19.06.2013
comment
-1 Чем этот код лучше кода в туториале? Учебник включает объяснение кода, а также использует поле со списком, которое было частью требования. Не нужно захламлять форум повторяющимися ответами. - person camickr; 19.06.2013