基于JComboBox选择打开新帧

时间:2011-10-23 09:57:42

标签: java swing

我是Java的新手。我正在大学做一个关于JavaSwing的项目。

我想要的功能就像当我在JComboBox中选择项目时,它应该显示一个新的AlwaysOnTop框架,该框架中带有选定项目名称的标签,当我选择另一个项目时,它应该只更新框架中的标签早些时候创建。

Here is my code:
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

import Swing_Package.ToolbarFrame2;


public class JComboBoxExample extends JPanel{
        JComboBox cards;

        public JComboBoxExample(){
            String[] items = {"Item 1", "Item 2", "Item 3"};
            cards = new JComboBox(items);

            ActionListener listener = new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                        cards = (JComboBox)e.getSource();
                        System.out.println(cards.getSelectedItem()+" ");
                    }
            };



            add(cards);
            cards.addActionListener(listener);
        }

        public static void createAndShowGUI(){
            JFrame frame = new JFrame("ComboBox Demo");
            frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

            JComboBoxExample content = new JComboBoxExample();
            content.setOpaque(true);
            frame.setContentPane(content);

            frame.pack();
            frame.setVisible(true);

        }

    public static void main(String[] args){
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                createAndShowGUI();
            }
        });
    }
}

因此,不是在控制台上显示所选项目,而是应该在具有相应选择的新帧中。

1 个答案:

答案 0 :(得分:2)

1)使用JFrame创建AlwaysOnTop frame太难了,您必须使用JDialogModalityType

查找setModal(Boolean)

2)将ItemListener(始终调用两次SELECTEDDESELECTED个事件)添加到JComboBox而不是ActionListener