@Elnurhan

Как поменять цвет текста в JList при нажатии на кнопку?

Пишу простенький ToDo List.
Нужно сделать так, чтобы при нажатии на кнопку "Выполнено", текст, в JList, становился зелёного цвета
Вот код:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class Window extends JFrame {

    private JTextField input = new JTextField("");
    private JButton addBtn = new JButton("Добавить");
    private JButton deleteBtn = new JButton("Удалить");
    private JButton completeBtn = new JButton("Выполнено");
    private ArrayList<String> missions = new ArrayList<>();
    private DefaultListModel<String> dlm = new DefaultListModel<String>();
    private JList<String> list = new JList<String>(dlm);

    Window() {
        super("ToDo List");
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        this.setBounds(100,100,600,200);
        Container container = this.getContentPane();
        container.setLayout(new GridLayout(5, 3));
        addBtn.addActionListener(new AddActionListener());
        deleteBtn.addActionListener(new DeleteActionListener());
        container.add(input);
        container.add(addBtn);
        container.add(deleteBtn);
        container.add(completeBtn);
        container.add(new JScrollPane(list));
        setVisible(true);
    }

    class AddActionListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            dlm.add(dlm.getSize(), input.getText());
        }
    }

    class DeleteActionListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            dlm.remove(list.getSelectedIndex());
        }
    }

    class CompleteActionListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            // Не знаю как реализовать данный класс
        }
    }

}
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
https://docs.oracle.com/javase/7/docs/api/javax/sw...

Вам нужно реализовать свой рендерер и установить его в список.

Рендерер получает информацию о ячейке и возвращает компонент с помощью которого эта ячейка должна быть отрисована.
Компонент не обязан создаваться каждый раз заново. Нормальная практика рисовать все ячейки одним экземпляром компонента.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы