Я создал класс, в котором настраиваю пользовательский интерфейс для всех JSlider по своему вкусу, но при запуске программы периодически получаю следующую ошибку:
Исключение в потоке "AWT- EventQueue-0» java.lang.NullPointerException: невозможно прочитать поле «слева», поскольку «this.focusInsets» имеет значение null
в java.desktop/javax.swing.plaf.basic.BasicSliderUI.calculateContentRect(BasicSliderUI.java:729)
на java.desktop/javax.swing.plaf.basic.BasicSliderUI.calculateGeometry(BasicSliderUI.java:698)в java.desktop/javax.swing.plaf.basic.BasicSliderUI$Handler.comComponentResized(BasicSliderUI.java:1857)
на java.desktop/java.awt.AWTEventMulticaster.comComponentResized(AWTEventMulticaster.java:167)
в java.desktop/java.awt.Component.processComponentEvent(Component.java:6447)
на java.desktop/java.awt.Component.processEvent(Component.java:6401)
на java.desktop/ java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
на java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
на java.desktop/ java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
на java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
на java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
на java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
на java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
в java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
в java. base/java.security.AccessController.doPrivileged(AccessController.java:400)
в java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
в java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
в java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
на java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
на java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
на java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
на java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
на java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
static class CustomSliderUI extends MetalSliderUI {
private final int customTrackWidth;
public CustomSliderUI(int customTrackWidth) {
super();
this.customTrackWidth = customTrackWidth;
//this.focusInsets = new Insets(0, 0, 0, 0);
//this.insetCache = new Insets(0, 0, 0, 0);
}
@Override
public void installUI(JComponent c) {
super.installUI(c);
if (this.focusInsets == null) {
this.focusInsets = new Insets(0, 0, 0, 0);
}
}
@Override
protected void calculateTrackRect() {
super.calculateTrackRect();
trackRect.width = customTrackWidth;
trackRect.x = (slider.getWidth() - customTrackWidth) / 2;
}
@Override
protected Dimension getThumbSize() {
return new Dimension(30, 30);
}
@Override
public void paintThumb(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(new Color(0xF3D39B));
int thumbWidth = 10;
int thumbHeight = 30;
int x = thumbRect.x + (thumbRect.width - thumbWidth) / 2;
int y = 0;
g2.fillRect(x, y, thumbWidth, thumbHeight);
}
@Override
public void paintTrack(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int trackHeight = 30;
trackRect.width = customTrackWidth;
// Fülle den ausgefüllten Bereich
int filledWidth = thumbRect.x - trackRect.x + (thumbRect.width / 2);
g2.setColor(new Color(0xBB7E3B));
g2.fillRect(trackRect.x, 0, filledWidth, trackHeight);
// Fülle den nicht ausgefüllten Bereich
g2.setColor(new Color(0x773A16));
g2.fillRect(trackRect.x + filledWidth, 0, trackRect.width - filledWidth, trackHeight);
}
}
[1]: https://i.sstatic.net/pBPtBSIf.png
Подробнее здесь: https://stackoverflow.com/questions/792 ... nsets-null
This.focusInsets = null [дубликат] ⇐ JAVA
Программисты JAVA общаются здесь
1733602090
Anonymous
Я создал класс, в котором настраиваю пользовательский интерфейс для всех JSlider по своему вкусу, но при запуске программы периодически получаю следующую ошибку:
Исключение в потоке "AWT- EventQueue-0» java.lang.NullPointerException: невозможно прочитать поле «слева», поскольку «this.focusInsets» имеет значение null
в java.desktop/javax.swing.plaf.basic.BasicSliderUI.calculateContentRect(BasicSliderUI.java:729)
на java.desktop/javax.swing.plaf.basic.BasicSliderUI.calculateGeometry(BasicSliderUI.java:698)в java.desktop/javax.swing.plaf.basic.BasicSliderUI$Handler.comComponentResized(BasicSliderUI.java:1857)
на java.desktop/java.awt.AWTEventMulticaster.comComponentResized(AWTEventMulticaster.java:167)
в java.desktop/java.awt.Component.processComponentEvent(Component.java:6447)
на java.desktop/java.awt.Component.processEvent(Component.java:6401)
на java.desktop/ java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4996)
на java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
на java.desktop/ java.awt.Component.dispatchEvent(Component.java:4828)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
на java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
на java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
на java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
на java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
в java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
в java. base/java.security.AccessController.doPrivileged(AccessController.java:400)
в java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
в java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
в java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
на java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
на java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
на java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
на java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
на java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
static class CustomSliderUI extends MetalSliderUI {
private final int customTrackWidth;
public CustomSliderUI(int customTrackWidth) {
super();
this.customTrackWidth = customTrackWidth;
//this.focusInsets = new Insets(0, 0, 0, 0);
//this.insetCache = new Insets(0, 0, 0, 0);
}
@Override
public void installUI(JComponent c) {
super.installUI(c);
if (this.focusInsets == null) {
this.focusInsets = new Insets(0, 0, 0, 0);
}
}
@Override
protected void calculateTrackRect() {
super.calculateTrackRect();
trackRect.width = customTrackWidth;
trackRect.x = (slider.getWidth() - customTrackWidth) / 2;
}
@Override
protected Dimension getThumbSize() {
return new Dimension(30, 30);
}
@Override
public void paintThumb(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(new Color(0xF3D39B));
int thumbWidth = 10;
int thumbHeight = 30;
int x = thumbRect.x + (thumbRect.width - thumbWidth) / 2;
int y = 0;
g2.fillRect(x, y, thumbWidth, thumbHeight);
}
@Override
public void paintTrack(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
int trackHeight = 30;
trackRect.width = customTrackWidth;
// Fülle den ausgefüllten Bereich
int filledWidth = thumbRect.x - trackRect.x + (thumbRect.width / 2);
g2.setColor(new Color(0xBB7E3B));
g2.fillRect(trackRect.x, 0, filledWidth, trackHeight);
// Fülle den nicht ausgefüllten Bereich
g2.setColor(new Color(0x773A16));
g2.fillRect(trackRect.x + filledWidth, 0, trackRect.width - filledWidth, trackHeight);
}
}
[1]: https://i.sstatic.net/pBPtBSIf.png
Подробнее здесь: [url]https://stackoverflow.com/questions/79257610/this-focusinsets-null[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия