#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. Большое спасибо, рад, что смог помочь. Если я ответил на ваш вопрос, пожалуйста, не забудьте принять мой ответ. Если вам нужно, чтобы я что-нибудь прояснил, дайте мне знать 🙂