Java 如何使用JComboBox添加JTextField

Java 如何使用JComboBox添加JTextField,java,swing,jtextfield,jcombobox,itemlistener,Java,Swing,Jtextfield,Jcombobox,Itemlistener,我需要知道如果选择了一个JComboBox选项,如何添加一个JTextField,如果选择了另一个选项,我不想再在那里添加该文本字段 这是我的密码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GUI extends JFrame{ //Not sure if this code is correct private JTextField text;

我需要知道如果选择了一个JComboBox选项,如何添加一个JTextField,如果选择了另一个选项,我不想再在那里添加该文本字段

这是我的密码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUI extends JFrame{

    //Not sure if this code is correct

    private JTextField text;

    private JComboBox box;
    private static String[] selector = {"Option 1", "Option 2"};

    public GUI(){
        super("Title");
        setLayout(new FlowLayout());

        box = new JComboBox(selector);
        add(box);

        box.addItemListener(
                new ItemListener(){
                    public void itemStateChanged(ItemEvent e){
                        if(){
                            //what should be in the if statement and what should i type down here to add the
                            //JTextField to the JFrame?
                        }
                    }
                    }
        );
    }
}

请尝试下一个示例,它将帮助您:

import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class TestFrame extends JFrame {

    public TestFrame(){
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                init();
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                pack();
                setVisible(true);
            }
        });
    }

    private void init() {
        final JComboBox<String> box = new JComboBox<String>(new String[]{"1","2"});
        final JTextField f = new JTextField(5);
        box.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED){
                    f.setVisible("1".equals(box.getSelectedItem()));
                    TestFrame.this.revalidate();
                    TestFrame.this.repaint();
                }
            }
        });

        add(box,BorderLayout.SOUTH);
        add(f,BorderLayout.NORTH);
    }

    public static void main(String... s){
        new TestFrame();
    }

}

当您在组合框中将Visibile设置为true时,只需将JTextField添加到框架并设置VisibleFalse。应该有效。1为了更快地获得更好的帮助,请发布一个最小的完整且可验证的示例。2对于一个空间中的两个或多个组件,请使用如图所示的。JTextField的“备用”组件可能是JPanel。谢谢!这解决了我的问题: