invoke("setBackground", menuBar, new Class[] { Color.class }, new Color[] { bg });
invoke("setBackground", menu1, new Class[] { Color.class }, new Color[] { bg });
invoke("setBackground", menu2, new Class[] { Color.class }, new Color[] { bg });
invoke("setForeground", menuBar, new Class[] { Color.class }, new Color[] { fg });
invoke("setForeground", menu1, new Class[] { Color.class }, new Color[] { fg });
invoke("setForeground", menu2, new Class[] { Color.class }, new Color[] { fg });
Object invoke(String methodName, Object object, Class<?>[] argsTypes, Object[] args) {
Object result = null;
try {
Method m = object.getClass().getDeclaredMethod(methodName, argsTypes);
m.setAccessible(true);
result = m.invoke(object, args);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}