线程“main”中的异常 java.lang.IllegalArgumentException:非法组件位置

Njw*_*w96 2 java user-interface swing illegalargumentexception

我正在这里编写 java 媒体播放器的 GUI 代码。当我尝试运行主类时,我不断收到以下错误消息:

Exception in thread "main" java.lang.IllegalArgumentException: illegalcomponent position
       at java.awt.Container.addImpl(Container.java:1085)
       at java.awt.Container.add(Container.java:465)
       at dj2.gui.ArtistsPane.<init>(ArtistsPane.java:19)
       at dj2.gui.MainFrame.<init>(MainFrame.java:36)
       at dj2.test.GUITest.main(GUITest.java:21)
Run Code Online (Sandbox Code Playgroud)

我认为问题来自我的 ArtistsPane 类,因为其他两个错误都引用了它。

这是我用于 ArtistsPane 的代码:

public class ArtistsPane extends JPanel{

    public ArtistsPane(){

       this.setLayout(new FlowLayout());
       add(new TracksAddRemoveToolBar(),FlowLayout.TRAILING);}}
Run Code Online (Sandbox Code Playgroud)

该问题是在 add 方法级别检测到的。它出什么问题了?谢谢!

Hov*_*els 5

您不是在添加组件时使用 FlowLayout.TRAILING,而是在定义布局本身时使用 FlowLayout.TRAILING,并且它属于 FlowLayout 构造函数参数。因此,请从 add 方法中删除那段代码。

例如,改变

public class ArtistsPane extends JPanel{

    public ArtistsPane(){

       this.setLayout(new FlowLayout());
       add(new TracksAddRemoveToolBar(),FlowLayout.TRAILING);}}
Run Code Online (Sandbox Code Playgroud)

public class ArtistsPane extends JPanel{

    public ArtistsPane(){    
       setLayout(new FlowLayout(FlowLayout.TRAILING));
       add(new TracksAddRemoveToolBar());
    } // please place your brakcets with care
 }
Run Code Online (Sandbox Code Playgroud)