Java Substance - Странное исключение - PullRequest
3 голосов
/ 15 сентября 2011

Я использую Substance look and feel version 6.0 в моем приложении Java Swing.Приложение прекрасно работает для меня, но некоторые пользователи приложения, особенно те, которые используют Windows 7, получают исключение по существу:

java.lang.InternalError: Unable to instantiate org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.colorchooser.ColorPalettesChooser
at org.pushingpixels.substance.internal.ui.SubstanceColorChooserUI.createDefaultChoosers(SubstanceColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua13ColorChooserUI.__org__pushingpixels__substance__internal__contrib__randelshofer__quaqua__Quaqua13ColorChooserUI__installUI(Quaqua13ColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua13ColorChooserUI.installUI(Quaqua13ColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua14ColorChooserUI.__org__pushingpixels__substance__internal__contrib__randelshofer__quaqua__Quaqua14ColorChooserUI__installUI(Quaqua14ColorChooserUI.java)
at org.pushingpixels.substance.internal.contrib.randelshofer.quaqua.Quaqua14ColorChooserUI.installUI(Quaqua14ColorChooserUI.java)
at org.pushingpixels.substance.internal.ui.SubstanceColorChooserUI.__org__pushingpixels__substance__internal__ui__SubstanceColorChooserUI__installUI(SubstanceColorChooserUI.java)
at org.pushingpixels.substance.internal.ui.SubstanceColorChooserUI.installUI(SubstanceColorChooserUI.java)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JColorChooser.setUI(Unknown Source)
at javax.swing.JColorChooser.updateUI(Unknown Source)
at javax.swing.JColorChooser.(Unknown Source)
at javax.swing.JColorChooser.(Unknown Source)
at javax.swing.JColorChooser.(Unknown Source)
at org.jdesktop.swingx.JXColorSelectionButton.getChooser(JXColorSelectionButton.java)
at org.jdesktop.swingx.JXColorSelectionButton$1.propertyChange(JXColorSelectionButton.java)
at java.beans.PropertyChangeSupport.fire(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at java.awt.Component.setBackground(Unknown Source)
at javax.swing.JComponent.setBackground(Unknown Source)

Это исключение встречается в последней строке в этом коде:

JXColorSelectionButton myColorSelectionButton = new JXColorSelectionButton();

myColorSelectionButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
myColorSelectionButton.setFocusPainted(false);
contentPane.add(myColorSelectionButton, cc.xy(29, 19));
/**
  * Some code here
  */
myColorSelectionButton.setBackground( Color.WHITE );  // Excepton occurres here !!

Я не могу найти место, где можно задать этот вопрос о веществе, поэтому, если вы поможете мне, это будет оценено.

Ответы [ 3 ]

4 голосов
/ 15 сентября 2011

Вещество больше не обновляется и не работает в Java 7.

Однако кто-то выбрал проект обратно, разветвив его и назвав его субстанцией: http://shemnon.com/speling/

Какойон поддерживает Java 7 и, похоже, имеет большие планы на следующее обновление.

Это должно быть так же просто, как замена библиотек, чтобы заставить его работать в вашем проекте.

2 голосов
/ 17 октября 2011

Текущие сборки: несущественные (которые являются ветвью поддержки Substance) и SwingX не демонстрируют эту ошибку, поэтому это исправленная ошибка.

Вот пример кода в

import java.awt.Color
import javax.swing.*
import org.jdesktop.swingx.JXColorSelectionButton

SwingUtilities.invokeAndWait {
@Grapes( 
[@Grab(group='org.swinglabs', module='swingx-core', version='1.6.2-2'),
@Grab(group='com.github.insubstantial', module='substance-swingx', version='7.0') ]
)
    JFrame frame = new JFrame("Test");
    JXColorSelectionButton myColorSelectionButton = new JXColorSelectionButton();

    myColorSelectionButton.setFocusPainted(false);
    frame.add(myColorSelectionButton);
    myColorSelectionButton.setBackground( Color.WHITE );  // Excepton occurres here !!
    frame.pack()
    frame.setVisible(true)
}

Соответствующие координаты Maven:

<dependency>
    <groupId>com.github.insubstantial</groupId>
    <artifactId>substance</artifactId>
    <version>7.0</version>
</dependency>

<dependency>
    <groupId>org.swinglabs</groupId>
    <artifactId>swingx-core</artifactId>
    <version>1.6.2-2</version>
</dependency>
<dependency>
    <groupId>com.github.insubstantial</groupId>
    <artifactId>substance-swingx</artifactId>
    <version>7.0</version>
</dependency>
1 голос
/ 15 сентября 2011

Я не знаю Substance, но в исходном коде видно, что это InternalError выбрасывается, когда выдается любое исключение во время создания панели выбора цвета.К сожалению (плохой код здесь!) Настоящее исключение проглочено, поэтому у вас нет простого способа увидеть это.Но трассировка стека реального исключения печатается в System.err, поэтому вы должны быть в состоянии увидеть этот вывод где-нибудь.Эта трассировка стека даст вам больше информации о том, в чем здесь проблема.

...