#java #arrays #jbutton
#java #массивы #jbutton
Вопрос:
У меня есть 2-мерный массив JButtons, и я хотел бы иметь возможность использовать кнопку, на которую наведена моя мышь, для выполнения действия, такого как изменение цвета. Как я могу это сделать? Спасибо.
Вот как я создаю кнопки:
for(int r = 0;r<10;r ){
for(int c = 0;c<10;c ){
buttonArray[r][c] = new JButton();
}
}
Комментарии:
1. Вы можете создать прослушиватель для каждой кнопки и внутри прослушивателя добавить конкретную работу, которую вы хотите выполнить. Посмотрите на этот пример цвета фона JButton при наведении курсора мыши .
2. Спасибо! Это очень помогло
Ответ №1:
Вот пример использования цикла и MouseAdapter
(поскольку вам не нужны все методы из MouseListener
) :
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class JButtonHighlighter extends JPanel {
public static void main(final String[] args) {
JFrame frame = new JFrame();
JPanel contentPanel = new JPanel();
contentPanel.setLayout(new GridLayout(10, 10));
JButton[][] buttonArray = new JButton[10][10];
for (int r = 0; r < 10; r ) {
for (int c = 0; c < 10; c ) {
final JButton newButton = new JButton();
final Color originalColor = newButton.getBackground();
final Color highlightColor = Color.GREEN;
newButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(final MouseEvent e) {
newButton.setBackground(highlightColor);
}
@Override
public void mouseExited(final MouseEvent e) {
newButton.setBackground(originalColor);
}
});
buttonArray[r][c] = newButton;
contentPanel.add(newButton);
}
}
frame.setContentPane(contentPanel);
frame.setSize(100, 100);
frame.setVisible(true);
}
}