private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 434, 261);
frame.getContentPane().add(panel);
panel.setLayout(null);
JCheckBox chckbxCheckbox = new JCheckBox("checkbox");
chckbxCheckbox.setBounds(44, 41, 97, 23);
panel.add(chckbxCheckbox);
JCheckBox chckbxCheckbox_1 = new JCheckBox("checkbox 2");
chckbxCheckbox_1.setBounds(197, 41, 97, 23);
panel.add(chckbxCheckbox_1);
}
基本上,我希望chckbxCheckbox
改变chckbxCheckbox_1
的状态。更改后,代码部分如下所示:
JCheckBox chckbxCheckbox = new JCheckBox("checkbox");
chckbxCheckbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
chckbxCheckbox_1.setEnabled(false);
}
});
chckbxCheckbox.setBounds(44, 41, 97, 23);
panel.add(chckbxCheckbox);
JCheckBox chckbxCheckbox_1 = new JCheckBox("checkbox 2");
chckbxCheckbox_1.setBounds(197, 41, 97, 23);
panel.add(chckbxCheckbox_1);
我得到以下内容:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
chckbxCheckbox_1 cannot be resolved
问题变成了,如何处理代码中显示较低的组件?同样,这只是一个示例代码。我正在处理的代码中有很多组件彼此交互,最终会阻止我移动代码以避免这个问题。
答案 0 :(得分:2)
您正在隐藏chckbxCheckbox_1变量。您需要在类中声明它而不是方法或构造函数。
而不是,
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 434, 261);
frame.getContentPane().add(panel);
panel.setLayout(null);
JCheckBox chckbxCheckbox = new JCheckBox("checkbox");
chckbxCheckbox.setBounds(44, 41, 97, 23);
panel.add(chckbxCheckbox);
JCheckBox chckbxCheckbox_1 = new JCheckBox("checkbox 2");
chckbxCheckbox_1.setBounds(197, 41, 97, 23);
panel.add(chckbxCheckbox_1);
}
做的:
public MyClass {
// declared in class
private JCheckBox chckbxCheckbox_1;
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 434, 261);
frame.getContentPane().add(panel);
panel.setLayout(null);
JCheckBox chckbxCheckbox = new JCheckBox("checkbox");
chckbxCheckbox.setBounds(44, 41, 97, 23);
panel.add(chckbxCheckbox);
// declare this variable in the class
chckbxCheckbox_1 = new JCheckBox("checkbox 2");
chckbxCheckbox_1.setBounds(197, 41, 97, 23);
panel.add(chckbxCheckbox_1);
}
接下来,您需要阅读并学习使用Swing布局管理器。
答案 1 :(得分:-1)
您应该为此使用getter,而不是直接访问该项目。 getter可以在第一次使用时实例化对象。
getCheckBox1()
{
if(mCheckbox1 == null)
{
mCheckbox1 = new;
}
return mCheckbox1;
}