如何在初始化此程序时禁用Java Swing JButton?

如何在初始化此程序时禁用Java Swing JButton?,java,swing,button,jbutton,jcombobox,Java,Swing,Button,Jbutton,Jcombobox,当程序初始化时,如何禁用我的btnExecute JButton 之后,当三个JComboBox所选项目不等于“选择…”项目时,启用此按钮。 此问题的第二部分已解决,但启动程序时按钮已启用,如果三个JComboBox不等于“选择…”项,则应解决此问题,使其仅允许在JButton上使用 这是我的代码: public class WebStarter_v2 { private JFrame frame; private JComboBox<Object> cbProgram; pri

当程序初始化时,如何禁用我的
btnExecute JButton
之后,当三个
JComboBox
所选项目不等于“选择…”项目时,启用此按钮。
此问题的第二部分已解决,但启动程序时按钮已启用,如果三个
JComboBox
不等于“选择…”项,则应解决此问题,使其仅允许在
JButton
上使用

这是我的代码:

public class WebStarter_v2 {

private JFrame frame;

private JComboBox<Object> cbProgram;
private JComboBox<Object> cbVersion;
private JComboBox<Object> cbAction;

private JButton btnExecute;

private boolean programSelected = false;
private boolean versionSelected = false;
private boolean actionSelected = false;

private String prototypeValue="XXXXXXXXXX";

private String[] programs = {"Choose...", "Apache", "PHP-FPM", "MySQL"};
private String[] actions = {"Choose...", "start", "restart", "stop"};
//private String[] status = {"standby", "running", "stopped", "error"};

private String[] apacheVersions = {"Choose...", "2.2.31", "2.4.17"};
private String[] phpVersions = {"Choose...", "5.6.16", "7.0.0"};
private String[] mysqlVersions = {"Choose...", "5.7.9"};

public static void main(String[] args) {...}

public WebStarter_v2() {
    initialize();
}
private void initialize() {
...
JPanel panel_Actions = new JPanel();
splitPane.setTopComponent(panel_Actions);

...
...

cbProgram = new JComboBox<Object>(new DefaultComboBoxModel<Object>(programs));
cbProgram.setPrototypeDisplayValue(prototypeValue);
cbProgram.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent event) {
        if(event.getStateChange() == ItemEvent.SELECTED){
            String item = event.getItem().toString();
            if ( item.contains("Apache") ){
                makeComboBoxModel(cbVersion, apacheVersions);
                programSelected = true;
                updateButtonState();
            }                       
            else if ( item.contains("PHP-FPM") ){
                makeComboBoxModel(cbVersion, phpVersions);
                programSelected = true;
                updateButtonState();
            }
            else if ( item.contains("MySQL") ){
                makeComboBoxModel(cbVersion, mysqlVersions);
                programSelected = true;
                updateButtonState();
            }
            else
            {
                programSelected = false;
                //set initial state of cbVersion and cbAction
                cbVersion.setModel(new DefaultComboBoxModel<Object>());
                cbAction.setModel(new DefaultComboBoxModel<Object>());
                updateButtonState();
            }
        }
    }
});
...
...
cbVersion = new JComboBox<Object>();
cbVersion.setPrototypeDisplayValue(prototypeValue);
cbVersion.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent event) {
        if(event.getStateChange() == ItemEvent.SELECTED){
            String item = event.getItem().toString();
            if ( !item.contains("Choose...") )
            {
                versionSelected = true;
                makeComboBoxModel(cbAction, actions);
                updateButtonState();
            }
            else{
                versionSelected = false;
                cbAction.setModel(new DefaultComboBoxModel<Object>());
                updateButtonState();
            }
        }
    }
});
...
...
cbVersion = new JComboBox<Object>();
cbVersion.setPrototypeDisplayValue(prototypeValue);
cbVersion.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent event) {
        if(event.getStateChange() == ItemEvent.SELECTED){
            String item = event.getItem().toString();
            if ( !item.contains("Choose...") )
            {
                versionSelected = true;
                makeComboBoxModel(cbAction, actions);
                updateButtonState();
            }
            else{
                versionSelected = false;
                cbAction.setModel(new DefaultComboBoxModel<Object>());
                updateButtonState();
            }
        }
    }
});
...
...
cbAction = new JComboBox<Object>();
cbAction.setPrototypeDisplayValue(prototypeValue);
cbAction.addItemListener(new ItemListener() {
    @Override
    public void itemStateChanged(ItemEvent event) {
        if(event.getStateChange() == ItemEvent.SELECTED){
            String item = event.getItem().toString();
            if ( !item.contains("Choose...") ){
                actionSelected = true;
                updateButtonState();
            }
            else{
                actionSelected = false;
                updateButtonState();
            }
        }
    }
});
...
...
btnExecute = new JButton("Execute");
...
...
JPanel panel_Messages = new JPanel();
splitPane.setBottomComponent(panel_Messages);
}
公共类WebStarter\u v2{
私有JFrame;
私人JComboBox CBP计划;
专用JComboxCBversion;
私人JComboBox cbAction;
私人JButton btnExecute;
选择的私有布尔值=false;
私有布尔版本Selected=false;
private boolean actionSelected=false;
私有字符串prototypeValue=“XXXXXXXXX”;
私有字符串[]程序={“选择…”,“Apache”,“PHP-FPM”,“MySQL”};
私有字符串[]操作={“选择…”,“启动”、“重新启动”、“停止”};
//私有字符串[]状态={“待机”、“正在运行”、“已停止”、“错误”};
私有字符串[]apacheVersions={“选择…”,“2.2.31”,“2.4.17”};
私有字符串[]phpVersions={“选择…”,“5.6.16”,“7.0.0”};
私有字符串[]mysqlVersions={“选择…”,“5.7.9”};
公共静态void main(字符串[]args){…}
公共网站启动程序(v2){
初始化();
}
私有void初始化(){
...
JPanel panel_Actions=new JPanel();
splitPane.setTopComponent(面板动作);
...
...
cbProgram=newjcombobox(newdefaultcomboxmodel(programs));
cbProgram.setPrototypeDisplayValue(prototypeValue);
cbProgram.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
if(event.getStateChange()==ItemEvent.SELECTED){
String item=event.getItem().toString();
if(item.contains(“Apache”)){
MakeComboxModel(cbVersion、apacheVersions);
programSelected=true;
updateButtonState();
}                       
else if(item.contains(“PHP-FPM”)){
MakeComboxModel(cbVersion,phpVersions);
programSelected=true;
updateButtonState();
}
else if(item.contains(“MySQL”)){
MakeComboxModel(cbVersion、mysqlVersions);
programSelected=true;
updateButtonState();
}
其他的
{
programSelected=false;
//设置cbVersion和cbAction的初始状态
setModel(新的DefaultComboxModel());
setModel(新的DefaultComboxModel());
updateButtonState();
}
}
}
});
...
...
cbVersion=newjcombobox();
cbVersion.setPrototypeDisplayValue(prototypeValue);
cbVersion.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
if(event.getStateChange()==ItemEvent.SELECTED){
String item=event.getItem().toString();
如果(!item.contains(“选择…”))
{
versionSelected=true;
MakeComboxModel(cbAction,actions);
updateButtonState();
}
否则{
versionSelected=false;
setModel(新的DefaultComboxModel());
updateButtonState();
}
}
}
});
...
...
cbVersion=newjcombobox();
cbVersion.setPrototypeDisplayValue(prototypeValue);
cbVersion.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
if(event.getStateChange()==ItemEvent.SELECTED){
String item=event.getItem().toString();
如果(!item.contains(“选择…”))
{
versionSelected=true;
MakeComboxModel(cbAction,actions);
updateButtonState();
}
否则{
versionSelected=false;
setModel(新的DefaultComboxModel());
updateButtonState();
}
}
}
});
...
...
cbAction=newjcombobox();
cbAction.setPrototypeDisplayValue(prototypeValue);
cbAction.addItemListener(新的ItemListener(){
@凌驾
公共无效itemStateChanged(ItemEvent事件){
if(event.getStateChange()==ItemEvent.SELECTED){
String item=event.getItem().toString();
如果(!item.contains(“选择…”)){
actionSelected=true;
updateButtonState();
}
否则{
actionSelected=false;
updateButtonState();
}
}
}
});
...
...
btnExecute=新的JButton(“执行”);
...
...
JPanel panel_Messages=new JPanel();
splitPane.setBottomComponent(面板消息);
}
您想要
按钮的方法:

btnExecute.setEnabled(false);
之后,当用户选择三个
JComboBox
时,您可以将其设置回
true

您想要的
JButton方法:

btnExecute.setEnabled(false);

之后,当用户选择三个
JComboBox
时,您可以将其设置回
true

或者您可以
setVisible()

btnExecute.setVisible(false);
然后在每个JComboBox的
addItemListener
中,您应该选中
programSelected
versionSelected
ActionSelected
。如果所有选项均为
true
,则选择

btnExecute.setVisible(true);

或者您可以
setVisible()
进行以下操作:

btnExecute.setVisible(false);
然后在每个JComboBox的
addItemListener
中,您应该选中
programSelected
versionSelected
ActionSelected
。如果所有选项均为
true
,则选择

btnExecute.setVisible(true);

我制作了一个短片,解释这个程序现在是如何工作的,并评论它应该如何工作。我制作了一个短片,解释这个程序现在是如何工作的