Циклическое изменение цвета линий сетки - Java
Формулировка задачи:
По заданию нужно нарисовать сетку, и по клику мыши на форме циклически менять цвета линий сетки в порядке: красный, синий, зеленый. Подскажите пожалуйста как циклически менять цвета.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.*;
public class DialogTest extends JFrame{
JPanel panSouth;
JPanel panCenter;
JButton but;
JTextField tf1;
JTextField tf2;
JLabel[] grid;
DialogTest(){
super();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 450);
setLayout(new BorderLayout());
panSouth = new JPanel();
tf1 = new JTextField(5);
tf2 = new JTextField(5);
but = new JButton("Change");
panSouth.add(new JLabel("X: "));
panSouth.add(tf1);
panSouth.add(new JLabel("Y: "));
panSouth.add(tf2);
panSouth.add(but);
add(panSouth, BorderLayout.SOUTH);
but.addActionListener(new ActionListener() {
int x;
int y;
@Override
public void actionPerformed(ActionEvent e) {
if (!tf1.getText().isEmpty() && !tf2.getText().isEmpty()){
x = Integer.parseInt(tf1.getText());
y = Integer.parseInt(tf2.getText());
panCenter = new JPanel(new GridLayout(y, x));
grid = new JLabel[x*y];
for (int i = 0; i<grid.length; i++){
grid[i] = new JLabel();
grid[i].setBorder(BorderFactory.createLineBorder(Color.black));
panCenter.add(grid[i]);
}
add(panCenter, BorderLayout.CENTER);
revalidate();
}
}
});
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
// Клик
int x = Integer.parseInt(tf1.getText());
int y = Integer.parseInt(tf2.getText());
// System.out.println("mouseClicked ->" + e.getX() + "->" + e.getY());
for (int i = 0; i<x*y; i++){
grid[i].setBorder(BorderFactory.createLineBorder(Color.red));
}
}
});
}
public static void main(String[] args) {
new DialogTest().setVisible(true);
}
}Решение задачи: «Циклическое изменение цвета линий сетки»
textual
Листинг программы
for (int i = 0; i<x*y; i++){
grid[i].setBorder(BorderFactory.createLineBorder(color));
}