繁体   English   中英

Java-JRadioButton选择出现面板

[英]Java - JRadioButton choose appear panel

我需要确保在选择一个特定的单选按钮时,将出现一个包含三个JSpinner和三个JLabel的JPanel。

我写了这段代码:

JRadioButton custom = new JRadioButton("Custom");
SpinnerModel spinnerModel = new SpinnerNumberModel(2, 0, 80, 1);
JSpinner height = new JSpinner(spinnerModel);
SpinnerModel spinnerModel2 = new SpinnerNumberModel(2, 0, 80, 1);
JSpinner width = new JSpinner(spinnerModel2);
SpinnerModel spinnerModelMine = new SpinnerNumberModel(1, 0, 99, 1);
JSpinner mines = new JSpinner(spinnerModelMine);

当我选择自定义JRadioButton时,该JPanel应该出现:

GroupLayout panelEstGroupLayout = new GroupLayout(panelEst);

        panelEstGroupLayout.setHorizontalGroup(
                panelEstGroupLayout.createParallelGroup(Alignment.LEADING)
                .addGroup
                (
                        panelEstGroupLayout.createSequentialGroup()
                        .addGap(5)
                        .addGroup
                        (
                            panelEstGroupLayout.createParallelGroup(Alignment.TRAILING)
                            .addComponent(startGame)
                            .addComponent(boxTotal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        )
                )
                .addGroup
                (
                        panelEstGroupLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup
                        (
                                panelEstGroupLayout.createParallelGroup(Alignment.TRAILING)
                                .addGroup
                                (
                                        Alignment.LEADING, panelEstGroupLayout.createSequentialGroup()
                                        .addGap(6)
                                        .addComponent(heightLabel, GroupLayout.PREFERRED_SIZE, 74, GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(ComponentPlacement.UNRELATED)
                                        .addComponent(widthLabel, GroupLayout.PREFERRED_SIZE, 74, GroupLayout.PREFERRED_SIZE)
                                        .addGap(18)
                                        .addComponent(minesLabel, GroupLayout.PREFERRED_SIZE, 74, GroupLayout.PREFERRED_SIZE)
                                )
                                .addGroup
                                (
                                        Alignment.LEADING, panelEstGroupLayout.createSequentialGroup()
                                        .addComponent(height, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(ComponentPlacement.RELATED)
                                        .addComponent(width, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(ComponentPlacement.RELATED)
                                        .addComponent(mines, GroupLayout.PREFERRED_SIZE, 84, GroupLayout.PREFERRED_SIZE)
                                )
                        )
                )
        );
        panelEstGroupLayout.setVerticalGroup(
                panelEstGroupLayout.createParallelGroup(Alignment.LEADING)
                    .addGroup(panelEstGroupLayout.createSequentialGroup()
                        .addGap(5)
                        .addComponent(boxTotal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                        .addGroup(panelEstGroupLayout.createParallelGroup(Alignment.LEADING)
                            .addGroup(panelEstGroupLayout.createSequentialGroup()
                                .addGap(74)
                                .addComponent(startGame))
                            .addGroup(Alignment.TRAILING, panelEstGroupLayout.createSequentialGroup()
                                .addPreferredGap(ComponentPlacement.UNRELATED)
                                .addGroup(panelEstGroupLayout.createParallelGroup(Alignment.BASELINE)
                                    .addComponent(heightLabel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(widthLabel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(minesLabel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addPreferredGap(ComponentPlacement.RELATED)
                                .addGroup(panelEstGroupLayout.createParallelGroup(Alignment.BASELINE)
                                    .addComponent(height)
                                    .addComponent(width, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                                    .addComponent(mines, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                                .addGap(43)))
                        .addGap(0))
            );

我将此代码插入条件为if的if中: if(custom.isSelected())但它不起作用。 为什么?

您应该为单选按钮注册一个动作侦听器,更改后,您可以根据单选按钮的状态适当地隐藏/取消隐藏或禁用/启用面板。

至于创建面板的时间,您可以选择立即创建它,但将其隐藏/禁用,直到需要为止。 或者,您只能在执行操作之后创建它。就我个人而言,我更喜欢在开始时创建所有元素,而不是在整个代码中分发GUI元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM