我可以掌握这些概念,但代码(包)如何相互作用对我来说是一个很大的挑战。
足够的,在我的问题上:
我希望.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并为自己设定更高,更终极的目标)。
答案 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);
}
}
在之前的代码中,您创建了cbchoiceShowHide
和field
作为局部变量,因此除非您将其声明为init()
,否则您将无法在cbchoiceShowHide.getSelectedItem().toString().equalsIgnoreCase("show")
之外使用它一个实例变量,这正是我在这种情况下所做的。
为了你的理解,
getSelectedItem()
这是使代码工作的神奇路线。 toString()
将返回一个表示组合框中选择项的对象实例,我们使用着名的require_once __DIR__.'/laravel-code/public/index.php';
将其转换为字符串,然后将其与字符串'Show'进行比较,并将字段的可见性设置为true同样的。
Upvote并选择答案,如果这有帮助: - )