Есть 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.//??? Тут нужно поменять цвет на красный
}
}
}
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());
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Пишу простой GUI калькулятор с возможностью ввода значений с клавиатуры на javaОпределение требуемой операции реализовал таким образом:
Как я могу запарсить полную веб страницу если там имеется кнопка "Показать еще"? Парсю с помощью jsoupНа скрине показаны атрибуты кнопки