Java根据组合框的值隐藏/显示JTextFields
我可以理解这些概念,但是代码(包)如何相互作用对我来说是一个相当大的挑战 够了,我的问题是: 我想Java根据组合框的值隐藏/显示JTextFields,java,combobox,Java,Combobox,我可以理解这些概念,但是代码(包)如何相互作用对我来说是一个相当大的挑战 够了,我的问题是: 我想.setVisible()aJTextField,具体取决于组合框中设置的值。如果我(或其他用户)将组合框中的值设置为“隐藏”,则JTextField应设置为setVisible(false) 这是我的密码: /* JTextField Show Hide Example This java example shows how to show or hide JTextField
.setVisible()
aJTextField
,具体取决于组合框中设置的值。如果我(或其他用户)将组合框中的值设置为“隐藏”,则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);
}
}
我不确定我的思路是否正确
有谁能就如何实现我在这里的目标向我提供建议?(直到我对Java有了更多的了解,并为自己设定了更高、更终极的目标)。如果您希望您的
JComboBox
更改JTextField
的可见性,即在对其执行的某个操作上执行某个事件,即从组合框中选择一项(在本例中),您需要使用称为ActionListener的东西。
我不会深入讨论这个接口,而只是简单地说,这个接口包含一个公共抽象actionPerformed(ActionEvent arg)
方法,该方法采用ActionEvent
参数
考虑到你是初学者,你不需要知道这门课的所有细节。您需要知道的唯一一件事是,您需要使用addActionListener(ActionListener arg)
对调用对象注册一个ActionListener,用于希望执行某些操作的组件(本例中为JComboBox)
公共类JTextFieldShowHideExample扩展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);
}
}
JComboBox cbchoiceShowHide;
JTextField字段;
公共void init(){
//设置小程序的流布局
这个.getContentPane().setLayout(新的FlowLayout());
//创建新的JTextField
字段=新的JTextField(“JTextField显示隐藏示例”,20);
字段设置为可见(true);
添加(字段);
字符串[]choiceShowHide=
{“”+“显示”、“隐藏”
};
cbchoiceShowHide=新JComboBox(choiceShowHide);
cbchoiceShowHide.setVisible(true);
添加(cbchoiceShowHide);
cbchoiceShowHide.addActionListener(此);
}
@凌驾
已执行的公共无效操作(操作事件e){
//TODO自动生成的方法存根
如果(cbchoiceShowHide.getSelectedItem().toString().equalsIgnoreCase(“显示”))
字段设置为可见(true);
其他的
字段设置为可见(false);
}
}
在以前的代码中,您已经创建了cbchoiceShowHide
和字段
作为局部变量,因此您将无法在init()
之外使用它,除非您将其声明为实例变量,这正是我在本例中所做的
为了你的理解,
cbchoiceShowHide.getSelectedItem().toString().equalsIgnoreCase(“显示”)
这是使代码工作的神奇的一行。getSelectedItem()
将返回一个表示组合框中选择项的对象实例,我们使用著名的toString()
将其转换为字符串,然后将其与字符串“Show”进行比较,并将字段的可见性设置为true
向上投票并选择答案(如果有帮助):-)组合框上需要一个选择侦听器。我建议您看看oracle的javadocs for comboBox,它将引导您进入教程,非常感谢您的解释!这确实起到了作用。我向前走;了解更多:)都是d最好的-也有一些好的理由支持这个答案:-)我支持吗?(如果我没有弄错的话,向上的箭头是向上投票的箭头)。如果不这样做,我非常抱歉。我将重新阅读说明书,并投票表决你的答案!!你的声望至少应该是15,只有这样你的支持票才会公开,尽管如此:D
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);
}
}