This.focusInsets = null [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 This.focusInsets = null [дубликат]

Сообщение 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


Подробнее здесь: https://stackoverflow.com/questions/792 ... nsets-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»