Как я могу запустить команду для нескольких кнопок? - PullRequest
0 голосов
/ 17 января 2019

Я хочу запустить команду для кнопок J, которые я хочу.

Я ищу это в Интернете, но не могу найти решение для приложений Swing.

b1.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b2.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b3.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b4.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b5.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b6.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b7.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b8.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
b9.setFont(new Font("Arial", Font.PLAIN, (h / 25)));

Я попробовал приведенный ниже код, но не смог использовать свойства JButton

JButton[] buttons = new JButton[];

Я заявляю это

buttons[0] = b1;
buttons[1] = b2;
buttons[2] = b3;
buttons[3] = b4;
buttons[4] = b5;
buttons[5] = b6;
buttons[6] = b7;
buttons[7] = b8;
buttons[8] = b9;

Но это не работа:

buttons.setFont(new Font("Arial", Font.PLAIN, (h / 25)));

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Если вы не хотите сохранять кнопку как поля или структуру И кнопки находятся в одном контейнере (если они находятся в другом контейнере, вам придется делать больше), другой подход будет использовать SwingUtils класса Дэррила Бёрка .

Итак, давайте посмотрим, как будет проще:

for (JButton b : SwingUtils.getDescendantsOfClass(JButton.class, panelWithButtons)) {
    b.setFont(new Font("Tahoma",Font.BOLD,14));
}

Вуаля! Все кнопки в "panelWithButtons" JPanel имеют этот шрифт. Поля не сохраняются, массив не сохраняется.

0 голосов
/ 17 января 2019

Шаг 1: Вы создаете массив и заполняете его кнопками.

JButton[] buttons = {b1,b2,b3,b4,b5,b6,b7,b8,b9};

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

buttons[0] = b1;
buttons[1] = b2;
buttons[2] = b3;

являются избыточными.

Шаг 2: перебрать массив

for ( JButton button : buttons ) {
  // here you are to call the setFont
}

Шаг 3: установить шрифт

for ( JButton button : buttons ) {
  button.setFont(new Font("Arial", Font.PLAIN, (h / 25)));
}
...