2014-01-08 2 views
-1

Эй, ребята, так что я делаю эту простую систему фильм билетной Мой поток программы выглядит следующим образом и все страницы находятся в разных JFrames: Главное меню> Выбрать день> Выбрать фильм> выберите место> вернуться к MainMenuОтключение jToggleButton на протяжении всего исполнения, возможно?

Я м, используя JToggle в выборе места. Можно ли отключить кнопку переключения на протяжении всего выполнения после ее выбора? Я использую JToggleButton.setEnabled(false);, но каждый раз, когда я возвращаюсь в меню и возвращаюсь к выбору места, кнопка все еще не отключена. Что я хочу сделать, так это отключить ее даже после того, как я вернусь в MainMenu, поэтому, когда я вернусь для выбора места, я больше не могу выбирать это место.

Ниже приведены некоторые коды в нем:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    this.setVisible(false); 
    MainSelection s = new MainSelection(); 
    s.setVisible(true); 

    if(jToggleButton1.isSelected()) 

    { 
     jToggleButton1.setEnabled(false); 
    } 

    if(jToggleButton2.isSelected()) 

    { 
     jToggleButton2.setEnabled(false); 
    } 

    if(jToggleButton3.isSelected()) 

    { 
     jToggleButton3.setEnabled(false); 
    } 

}           

Пожалуйста, проверьте его

+1

Вы не объяснили, почему 'setEnabled (false)' не работает для вас. –

+0

setEnabled (false) работает, но он работает только на этом JFrame, после того, как я перехожу на MainMenu, снова вернитесь к этому месту выбора, я снова смогу снова выбрать эти места – user3144549

+0

@JonathanDrapeau, что вы имеете в виду, воссоздавая выбор места? И как отключить его – user3144549

ответ

2

Вы, кажется, воссоздающий графический интерфейс, который отображает ваши кнопки тумблеры каждый раз, когда она отображается, и вы не должны делайте это.

Вместо

  • создать переменную для этого окна
  • рассмотреть вопрос о создании его ленивым способом - создать его, если и только если оно равно нулю
  • в противном случае, если не нулевой, и он должен показать , просто сделайте его видимым через setVisible(true).
  • и наоборот сделать его невидимым при необходимости через setVisible(false).
  • не отображают несколько JFrames в вашем приложении. Вместо этого приложение должно иметь один основной JFrame, а затем вы можете запустить его диалоговые окна, например JDialogs, или поменять «представления» через CardLayout, если это необходимо.

В частности:

  • Сделать переменную MainSelection, s, поле экземпляра класса - объявить и инициализировать его раз в классе.
  • Только установите это в этом методе. Не создавайте новую.
  • В будущем не плюйте кучу JFrames на пользователя, так как это ужасный и раздражающий пользовательский интерфейс. Вместо этого прочитайте учебник CardLayout (Google поможет вам найти его) и используйте его. Передайте свой код в сторону создания JPanels, а не JFrames.

Редактировать
Вы спрашиваете:

Я действительно нужна помощь сделать переменную MainSelection, s, поле экземпляра класса - объявить и инициализировать ее один раз в классе , Только установите его в этом методе. Не создавайте новую. Как создать поле экземпляра? Также я объявляю его в форме mainselection или форме выбора места для сидения?

Вы делаете что-то вроде:

public class Foo { 

    private void someMethod() { 
    // the code below creates a new SomeClass instance each time the method is called 
    SomeClass localVariable = new SomeClass(); 
    localVariable.setVisible(true); 
    } 
} 

И я рекомендую, что вместо того, чтобы вы:

public class Foo { 
    // the code below creates a SomeClass instance only *once*. 
    private SomeClass instanceField = new SomeClass(); 

    private void someMethod() { 
    instanceField.setVisible(true); 
    } 
} 

Кроме того, вы должны сделать что-то о том, что дублированный пост твой:

  • Сначала закройте его - у вас не должно быть более одной очереди stion - это несправедливо для нас и других.
  • Примите и повторите голосование в другом сообщении, чтобы выразить признательность за усилия и полезность постера.
+0

извините, я не очень понимаю, что говорится, потому что я только что начал программировать на Java, вы могли бы попробовать/как я мог это сделать? @hovercraft, полный угрей – user3144549

+0

@ user3144549: Не должен ** ** ** быть первым, чтобы показать код? Мы можем быть гораздо лучше, чтобы помочь вам с определенными особенностями, если вы это сделаете. –

+0

Могу ли я отправить вам электронное письмо или что-то в этом роде? даже копирование части кода слишком длинное в разделе комментариев @hover – user3144549

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