Java隐藏/显示JTextFields依赖于组合框的值

时间:2017-03-16 16:12:14

标签: java combobox

我可以掌握这些概念,但代码(包)如何相互作用对我来说是一个很大的挑战。

足够的,在我的问题上:

我希望.setVisible() JTextField取决于在组合框中设置的值。如果我(或其他用户)将组合框中的值设置为“隐藏”,则JTextField应设置为setVisible(false)

这是我的代码:

/*
    JTextField Show Hide Example
    This java example shows how to show or hide JTextField
    using Java Swing JTextField class.
*/


import java.awt.FlowLayout;
import javax.swing.JApplet;
import javax.swing.JComboBox;
import javax.swing.JTextField;

public class JTextFieldShowHideExample extends JApplet{

    public void init(){

            //set flow layout for the applet
            this.getContentPane().setLayout(new FlowLayout());

            //create new JTextField
            JTextField field = new JTextField("JTextField Show Hide Example", 20);
            field.setVisible(true);
            add(field);

            String[] choiceShowHide =  
                { "" + "Show","Hide"
                };
            final JComboBox<String> cbchoiceShowHide = new JComboBox<String>(choiceShowHide);
            cbchoiceShowHide.setVisible(true);
            add(cbchoiceShowHide);
    }
}

我怀疑我需要在

行中使用if语句
 if (choiceShowHide == 'hide') {
     set field.setVisible(false);
  }

我不确定我的思路是否正确。

有谁能告诉我如何实现我的目标? (直到我学到更多Java并为自己设定更高,更终极的目标)。

1 个答案:

答案 0 :(得分:0)

如果您希望JComboBox更改JTextField的可见性,即在对其执行某些操作时执行某些事件,即从组合框中选择项目(在本例中),你需要使用一个名为ActionListener的东西。 我不会深入到这个界面的深处,只是在表面上说这个界面包含一个带有actionPerformed(ActionEvent arg)参数的公共抽象ActionEvent方法。

考虑到您是初学者,您无需了解此课程的所有详细信息。您需要知道的是,您需要使用addActionListener(ActionListener arg)运算符在调用对象上使用.为要执行某些操作的组件(在您的情况下为JComboBox)注册ActionListener。

public class JTextFieldShowHideExample extends JApplet实现ActionListener {

JComboBox<String> cbchoiceShowHide;
JTextField field;
public void init(){

        //set flow layout for the applet
        this.getContentPane().setLayout(new FlowLayout());

        //create new JTextField
        field = new JTextField("JTextField Show Hide Example", 20);
        field.setVisible(true);
        add(field);

        String[] choiceShowHide =  
            { "" + "Show","Hide"
            };
        cbchoiceShowHide = new JComboBox<String>(choiceShowHide);
        cbchoiceShowHide.setVisible(true);
        add(cbchoiceShowHide);
        cbchoiceShowHide.addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(cbchoiceShowHide.getSelectedItem().toString().equalsIgnoreCase("show"))
        field.setVisible(true);
    else
        field.setVisible(false);
    }
}

在之前的代码中,您创建了cbchoiceShowHidefield作为局部变量,因此除非您将其声明为init(),否则您将无法在cbchoiceShowHide.getSelectedItem().toString().equalsIgnoreCase("show")之外使用它一个实例变量,这正是我在这种情况下所做的。

为了你的理解, getSelectedItem() 这是使代码工作的神奇路线。 toString()将返回一个表示组合框中选择项的对象实例,我们使用着名的require_once __DIR__.'/laravel-code/public/index.php'; 将其转换为字符串,然后将其与字符串'Show'进行比较,并将字段的可见性设置为true同样的。

Upvote并选择答案,如果这有帮助: - )