Как отключить мой btnExecute JButton
при инициализации программы?
После этого, когда выбранные пунктыне совпадают с пунктом «Выбрать ...», включите эту кнопку.
Вторая часть этой проблемы решена, но при запуске программы кнопка включена, это должно разрешаться только на JButton
, если три JComboBox
не равны элементу «Выбрать ...».Как отключить Java Swing 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);
}
Я решил, что этого достаточно для него. Но для меня последний ключ был создан после других элементов кода. Таким образом, несмотря на то, что глобальные переменные, определенные в ключе, не работали. Теперь я переместил код кнопки прежде всего, поэтому теперь работает отлично. :) –