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