Как мне изменить 100 объектов, не написав 100 строк кода? (Java)

#java

#java

Вопрос:

У меня есть много объектов JButton, которые имеют имена a, b, c, d, …

Я хочу установить все их состояния в соответствии с имеющимся у меня логическим массивом. Например, если логический массив имеет значение [true, false, true], я хочу установить для состояния a значение true, для состояния b значение false, а для состояния c значение true. (используя JButton.setEnabled(логическое значение))

Проблема в том, что у меня слишком много объектов, и если мне придется менять их состояния один за другим, код станет длинным и избыточным.

Как мне сделать это простым способом?

Я программирую на Netbeans, Java с Ant, в форме JFrame.

Редактировать) Netbeans не позволит вам изменять код, который создает объекты. Итак, «частный javax.swing.JButton a» эта часть неизменяема.

Комментарии:

1. Не помещайте их в переменные с именами a, b, c и т.д. Поместите их в массив или какую-нибудь коллекцию. Для этого они и предназначены.

2. JButton[] кнопки = новый JButton[100];

3. Если у вас есть 100 строк JButton объявлений переменных, ваш код уже длинный и избыточный.

Ответ №1:

Кажется, что такого количества отдельных JButtons следует избегать любой ценой, особенно если у вас есть сценарии, когда вам нужно обратиться к ним всем, но если вы застряли с этим, вы могли бы сделать это:

 JButton a = new JButton();
JButton b = new JButton();
//Etc for all the buttons you make
        
JButton[] list = {a,b}; //Manually insert the JButtons into an array
        
for(int i=0; i < list.length; i  ) //For loop through all of the buttons in the list
{
        list[i].addNotify(); //Then just use list[i] and that will be whatever JButton is at index i in the list (so in my example, i=0 is button a, i=1 is button b)
}
 

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

Если у вас есть возможность начать с нуля, и это упростит задачу, я предлагаю для начала поместить все кнопки в массив, например, код ниже:

 JButton[] list = new JButton[10]; //Manually insert the JButtons into an array
        
for(int i=0; i < list.length; i  ) //For loop through all of the buttons in the list
{
        list[i] = new JButton();
        list[i].addNotify(); //Then just use list[i] and that will be whatever JButton is at index i in the list (so in my example, i=0 is button a, i=1 is button b)
}
 

Массивы особенно полезны для этих сценариев, когда у вас много объектов одного типа и с ними выполняются одинаковые операции, поэтому, исходя из вашего описания, это может быть хорошее приложение

Комментарии:

1. Большое спасибо, рад, что смог помочь. Если я ответил на ваш вопрос, пожалуйста, не забудьте принять мой ответ. Если вам нужно, чтобы я что-нибудь прояснил, дайте мне знать 🙂