2016-02-12 2 views
1

Как отключить мой 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); 
} 

ответ

3

Вы хотите setEnabled метод в JButton:

btnExecute.setEnabled(false); 

После этого, когда ваш пользователь выбирает три JComboBox вы можете установить его обратно в true.

+0

Я решил, что этого достаточно для него. Но для меня последний ключ был создан после других элементов кода. Таким образом, несмотря на то, что глобальные переменные, определенные в ключе, не работали. Теперь я переместил код кнопки прежде всего, поэтому теперь работает отлично. :) –

1

Или вы можете setVisible() для этого:

btnExecute.setVisible(false); 

А потом в addItemListener для каждого JComboBox вы должны проверить programSelected, versionSelected и ActionSelected. Если все они: true, make

btnExecute.setVisible(true); 
+0

Я сделал короткое видео, в котором объясняется, как работает программа сейчас и комментирует, как она должна работать. https://www.youtube.com/watch?v=N7QA-XtqwBs –

 Смежные вопросы

  • Нет связанных вопросов^_^