Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解决组件问题-范围_Java_Swing_User Interface_Scope_Absolutelayout - Fatal编程技术网

Java 解决组件问题-范围

Java 解决组件问题-范围,java,swing,user-interface,scope,absolutelayout,Java,Swing,User Interface,Scope,Absolutelayout,基本上,我想要chckbxCheckbox,来改变chckbxCheckbox\u 1的状态。更改后,代码部分如下所示: private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 450, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout

基本上,我想要
chckbxCheckbox
,来改变
chckbxCheckbox\u 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);
}
我得到以下信息:

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);

问题是,如何处理代码中显示较低的组件?同样,这只是一个示例代码。我正在处理的代码中有更多的组件彼此交互,最终会阻止我移动代码以避免此问题。

您正在跟踪chckbxCheckbox_1变量。您需要在类中而不是在方法或构造函数中声明它

所以,

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem: 
chckbxCheckbox_1 cannot be resolved
做:


接下来,您将要阅读并学习使用Swing布局管理器。

chckbxCheckbox_1.setBounds(197,41,97,23)javagui可能必须在许多平台上工作,在不同的屏幕分辨率上&使用不同的plaf。因此,它们不利于部件的精确放置。对于健壮的GUI,请使用布局管理器或它们的组合,以及空白的布局填充和边框来组织组件。删除JCheckBox chckbxCheckbox_1=新建JCheckBox(“复选框2”);从初始化块和make是实例变量,然后尝试在修改后块中使用此实例变量。不要在“修改后”块中创建新复选框。谢谢,您的帮助非常宝贵。谢谢,一如既往,堆栈溢出弥补了我在这方面的无知(或者我在编码方面的无知)。我将进一步研究Swing布局,不再偏好绝对布局。这已经不是第一次有人告诉我了。
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);
    }