Циклическое изменение цвета линий сетки - Java

Узнай цену своей работы

Формулировка задачи:

По заданию нужно нарисовать сетку, и по клику мыши на форме циклически менять цвета линий сетки в порядке: красный, синий, зеленый. Подскажите пожалуйста как циклически менять цвета.
Листинг программы
  1. import java.awt.*;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.awt.event.MouseAdapter;
  5. import java.awt.event.MouseEvent;
  6. import javax.swing.*;
  7. import java.awt.event.*;
  8. import javax.swing.*;
  9. import java.awt.event.*;
  10. public class DialogTest extends JFrame{
  11. JPanel panSouth;
  12. JPanel panCenter;
  13. JButton but;
  14. JTextField tf1;
  15. JTextField tf2;
  16. JLabel[] grid;
  17. DialogTest(){
  18. super();
  19. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  20. setSize(400, 450);
  21. setLayout(new BorderLayout());
  22. panSouth = new JPanel();
  23. tf1 = new JTextField(5);
  24. tf2 = new JTextField(5);
  25. but = new JButton("Change");
  26. panSouth.add(new JLabel("X: "));
  27. panSouth.add(tf1);
  28. panSouth.add(new JLabel("Y: "));
  29. panSouth.add(tf2);
  30. panSouth.add(but);
  31. add(panSouth, BorderLayout.SOUTH);
  32. but.addActionListener(new ActionListener() {
  33. int x;
  34. int y;
  35. @Override
  36. public void actionPerformed(ActionEvent e) {
  37. if (!tf1.getText().isEmpty() && !tf2.getText().isEmpty()){
  38. x = Integer.parseInt(tf1.getText());
  39. y = Integer.parseInt(tf2.getText());
  40. panCenter = new JPanel(new GridLayout(y, x));
  41. grid = new JLabel[x*y];
  42. for (int i = 0; i<grid.length; i++){
  43. grid[i] = new JLabel();
  44. grid[i].setBorder(BorderFactory.createLineBorder(Color.black));
  45. panCenter.add(grid[i]);
  46. }
  47. add(panCenter, BorderLayout.CENTER);
  48. revalidate();
  49. }
  50. }
  51. });
  52. addMouseListener(new MouseAdapter() {
  53. @Override
  54. public void mouseClicked(MouseEvent e) {
  55. super.mouseClicked(e);
  56. // Клик
  57. int x = Integer.parseInt(tf1.getText());
  58. int y = Integer.parseInt(tf2.getText());
  59. // System.out.println("mouseClicked ->" + e.getX() + "->" + e.getY());
  60. for (int i = 0; i<x*y; i++){
  61. grid[i].setBorder(BorderFactory.createLineBorder(Color.red));
  62. }
  63. }
  64. });
  65. }
  66. public static void main(String[] args) {
  67. new DialogTest().setVisible(true);
  68. }
  69. }

Решение задачи: «Циклическое изменение цвета линий сетки»

textual
Листинг программы
  1. for (int i = 0; i<x*y; i++){
  2.                     grid[i].setBorder(BorderFactory.createLineBorder(color));
  3.                 }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут