Циклическое изменение цвета линий сетки - 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)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д