Открытие нового фрейма на основе выбора JComboBox

#java #swing

#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. Ваш пост не содержит ‘?’. В чем ваш вопрос?

2. Когда я выбираю элемент из JComboBox, должен появиться новый фрейм с сообщением или JLabel выбранного элемента. Допустим, у меня есть 3 элемента (пункт 1, пункт 2, пункт 3) в выпадающем списке, когда я выбираю «Пункт 1», должен появиться новый фрейм, в котором будет отображаться «Вы выбрали: пункт 1».

3. Единственными вопросительными знаками в этом сообщении являются 2, которые я написал, — так что вы все еще не задали вопрос. Это не ракетостроение.

4. Привет, Эндрю, при всем уважении, я новичок на этом сайте, и я все еще не уверен, что вы просите меня сделать, просто игнорируйте меня, если вы не заинтересованы в ответе на мой вопрос выше

Ответ №1:

1) его слишком сложно создать AlwaysOnTop frame с помощью JFrame, вам нужно искать JDialog с ModalityType или setModal(Boolean)

2) добавьте ItemListener (всегда вызывает дважды SELECTED и DESELECTED события) в JComboBox вместо ActionListener

Комментарии:

1. @rockwire: это ваше решение: используйте JDialog. (1 )