java - 自动出现 JTextField

标签 java swing jframe jtextfield

拜托,我怎样才能自动显示用户在 JComboBox 中选择的一些 JTextField ? 我的例子很简单。我的盒子里有一个 JComboBox,可以进行一些操作。根据用户从此 JComboBox 选择的内容,我会出现一个或多个 JTextField。

我有这个代码:

public static void main(String[] args) {

    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            CalculatriceFenetre fenetre = new CalculatriceFenetre();
            fenetre.setVisible(true);
        }
    });
}

.

public class CalculatriceFenetre extends JFrame {

    private JTextField field1, field2;
    private JComboBox liste;

    public CalculatriceFenetre() {
        super();

        build();
    }

    private void build() {
        setTitle("Calculatrice");
        setSize(400, 200);
        setLocationRelativeTo(null);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setContentPane(buildContentPane());
    }

    private JPanel buildContentPane() {
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());
        panel.setBackground(Color.white);

        field1 = new JTextField();
        field1.setColumns(10);

        field2 = new JTextField();
        field2.setColumns(10);
        field2.setVisible(false);

        panel.add(field1);
        panel.add(field2);

        liste = new JComboBox(new OperateursModel());
        liste.addActionListener(new CustomActionListener());
        panel.add(liste);

        return panel;
    }

    class CustomActionListener implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if (liste.getSelectedItem().equals("op1")) {
                 field2.setVisible(true);
            }
        }
    }

.

public class OperateursModel extends DefaultComboBoxModel {
private ArrayList<String> operateurs;

public OperateursModel(){
    super();
    operateurs = new ArrayList<String>();
    operateurs.add("op1");

}

public String getSelectedOperateur(){
    return (String)getSelectedItem();
}

@Override
public Object getElementAt(int index) {
    return operateurs.get(index);
}

@Override
public int getSize() {
    return operateurs.size();
}

@Override
public int getIndexOf(Object element) {
    return operateurs.indexOf(element);
    }
}

最佳答案

And depending on what the user choose from this JComboBox, I appear one or more JTextField.

然后您可以编写一个 ActionListener 来处理从组合框中选择一个项目。

您可以先阅读 How to Use a Combo Box 上的 Swing 教程部分。一个使用 ActionListener 的工作示例。

在您的情况下,您想向框架添加一个文本字段,因此代码类似于:

JTextField textField = new JTextField(10);
frame.add( textField );
frame.revalidate();
frame.repaint();

此外,您无需创建自定义 ComboBoxModel。您可以只将项目添加到默认模型。同样,本教程将向您展示如何执行此操作。

关于java - 自动出现 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32103265/

相关文章:

Java 反射 : Is the order of class fields and methods standardized?

java - 代码块在 Android Studio 中无法运行,但在 Eclipse 中运行良好?

java - 面临serialversionuid 问题

java - 如何使方法返回面板?

java - 如何测试来自 JPanel 的用户输入?

java - JFrame 的 keylistener 和 actionlistener

java - Vaadin 背景图像设置大小?

sockets - Java Socket 接受来自一个 IP 的连接

java - 在 Java 中绘制谢尔宾斯基三角形

java - 获取选项卡索引以删除选项卡组件