Я пытаюсь установить форму моего окна JFrame на эллипс, но вместо этого он выдает следующую ошибку:
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at Splash.setShape(Splash.java:48)
at Splash.<init>(Splash.java:25)
at BackOffice.init(BackOffice.java:40)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Проблема в том, что я посылаю 2 параметра, а метод принимает только 2 параметра, поэтому я не вижу, откуда я получаю эту ошибку? Строка, на которую указывает ошибка, является строкой, которая говорит mSetWindowShape.invoke(this, shape);
, здесь уместный метод:
private void setShape() {
Class<?> awtUtilitiesClass;
try {
awtUtilitiesClass = Class.forName("com.sun.awt.AWTUtilities");
Method mSetWindowShape = awtUtilitiesClass.getMethod("setWindowShape", Window.class, Shape.class);
Shape shape = (Shape) new Ellipse2D.Double(0, 0, getWidth(), getHeight());
mSetWindowShape.invoke(this, shape);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
РЕДАКТИРОВАТЬ: Я снял один параметр и получил ту же ошибку (неправильное количество аргументов). Затем я добавил 3 параметра (window, shape, 0) и получил «несоответствие типов аргументов». Затем я попробовал логическое значение и строку в качестве третьего параметра, но они также дали «несоответствие типов аргументов». Я не понимаю этого, потому что в учебнике показаны только 2 параметра. Теперь, видимо, есть три?