Циклическое изменение цвета линий сетки - 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));
                }

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


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

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

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