Изменить цвет у Border

154
06 июля 2019, 03:00

Есть Border:

Border border = BorderFactory.createLineBorder(Color.BLACK);

Этот бордер я устанавливаю для элемента JLabel

Я хочу, чтобы при нажатии на мой JLabel менялся цвет этой рамки. Проблема в том, что у рамки нет методов вроде setColor() и т.д. Каким образом это можно реализовать?

Добавляю пример кода:

public class Window extends JFrame {
Border border = BorderFactory.createLineBorder(Color.BLACK);
Click click = new Click();
public Window() {
    JLabel[] labels = new JLabel[9];
    for(JLabel label : labels) {
        label = new JLabel();
        label.setOpaque(true);
        label.setBorder(border);
        label.addMouseListener(click);
        add(label);
    }
}
class Click extends MouseAdapter {
    @Override
    public void mouseClicked(MouseEvent e) {
        JLabel label = (Jlabel)e.getComponent();//На всякий случай можно получить элемент по которому кликнули...
        border.//??? Тут нужно поменять цвет на красный
    }
}
}
Answer 1
public class TestFrame extends JFrame {
public TestFrame() throws HeadlessException {
    JLabel[] labels = new JLabel[9];
    getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
    Dimension maxSize = new Dimension(100,30);
    for(JLabel label : labels) {
        label = new JLabel("test");
        label.setOpaque(true);
        label.setBorder(new MyBorder(Color.BLACK,2));
        label.addMouseListener(new Click());
        label.setMaximumSize(maxSize);
        getContentPane().add(label);
    }
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
class Click extends MouseAdapter {
    @Override
    public void mouseClicked(MouseEvent e) {
        JLabel label = (JLabel)e.getComponent();//На всякий случай можно получить элемент по которому кликнули...
        ((MyBorder)label.getBorder()).changeColor(label,Color.RED);//??? Тут нужно поменять цвет на красный
    }
}
private class MyBorder extends LineBorder{
    private Color newColor;
    public MyBorder(Color color, int thickness) {
        super(color, thickness);
    }
    public void changeColor(JLabel label,Color color){
        lineColor = color;
        getGraphics().setColor(color);
        Point p = label.getLocationOnScreen();
        paintBorder(label,getGraphics(),p.x,p.y,label.getWidth(),label.getHeight());
    }
}

}

READ ALSO
Привязка операции “=” к клавише Enter.

Привязка операции “=” к клавише Enter.

Пишу простой GUI калькулятор с возможностью ввода значений с клавиатуры на javaОпределение требуемой операции реализовал таким образом:

158
Парсинг страницы java

Парсинг страницы java

Как я могу запарсить полную веб страницу если там имеется кнопка "Показать еще"? Парсю с помощью jsoupНа скрине показаны атрибуты кнопки

155
Fetch lazy Spring Data JPA

Fetch lazy Spring Data JPA

Я имею класс Entity:

155