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();
}
}
編集: 1 つのパラメーターを削除すると、同じエラーが発生しました (引数の数が間違っています)。次に、3 つのパラメーター (window、shape、0) を入力すると、「引数の型の不一致」が発生しました。次に、3番目のパラメーターとしてブール値と文字列を試しましたが、それらも「引数の型の不一致」を引き起こしました。チュートリアルでは2つのパラメーターしか表示されないため、これはわかりません。どうやら3人いるらしい?