package swing;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
public class Test {
static void test() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
JPanel jPanel = new javax.swing.JPanel();
UIDefaults defaults = UIManager.getDefaults();
Object cl = defaults.get("ClassLoader");
ClassLoader uiClassLoader =
(cl != null) ? (ClassLoader)cl : jPanel.getClass().getClassLoader();
try {
String className = (String)defaults.get(jPanel.getUIClassID());
if (className != null) {
Class cls = (Class)defaults.get(className);
if (cls == null) {
if (uiClassLoader == null) {
Method m = SwingUtilities.class.getDeclaredMethod("loadSystemClass", String.class);
m.setAccessible(true);
m.invoke(null, className);
// cls = SwingUtilities.loadSystemClass(className);
throw new RuntimeException("FAIL");
}
else {
cls = uiClassLoader.loadClass(className);
}
}
}
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (ClassCastException e) {
e.printStackTrace();
}
jPanel.setVisible(true);
}
}