【问题标题】:Java swing, elements get back on their initial position, after adding new oneJava swing,元素在添加新元素后回到初始位置
【发布时间】:2013-05-29 11:33:59
【问题描述】:

我正在尝试编写 java 程序,它允许我动态创建新控件,并通过鼠标移动它们。 现在我可以移动它们,但是当我创建新对象时,每个对象都会返回到其初始位置。原因很明显 - 我在大型机上使用 pack() 方法,但我不知道该怎么做。

说明:

  • myPanel - 我的扩展 JPanel 的类
  • PanelList - ArrayList 包含生成的面板
  • addmyPanel - 将新面板添加到 PanelList 的方法
  • getmyPanel - 返回具有特定 id 的 myPanel

    private void jButton0ActionActionPerformed(ActionEvent event) {
        myPanel temp = new myPanel();
        addmyPanel();
        for (int i =0 ;i < PanelList.size(); i++){
            temp = PanelList.get(i);
            if (!temp.getIsActive()){
                try{
                    add(getmyPanel(temp.getId()), new Constraints(new Leading(35, 100, 10, 10), new Leading(44, 100, 12, 12)));
                    PanelList.get(i).setIsActive();
                }
                catch (NoSuchElementException e){}
            }
        }
        frame.pack();
    }
    

【问题讨论】:

标签: java swing jpanel


【解决方案1】:

查看Drag Layout。调用布局管理器时不会重置位置。

【讨论】:

  • 我真的很想尝试,但是当我像描述的那样使用它时却出现错误:myPanel temp = new myPanel( new DragLayout() ); DragLayout 无法解析为类型
  • 这可能是因为您正在使用 myPanel 并且您有一个自定义构造函数。创建面板后只需使用temp.setLayout( new DragLayout() );
  • 是的,我确实使用了自定义构造函数,但是 setLayout 方法给了我同样的错误。我还在构造函数中添加了super();,但它什么也没给我,无论如何,这是我的整个代码,现在问题会更清楚pastebin.com/BwxgibWDpastebin.com/S4WurtCB
  • 抱歉,您似乎正在使用 IDE 生成代码,并且您正在为布局管理器使用自定义类。我不知道那个代码是做什么的。您应该手动创建 GUI,不要依赖生成的代码。这样你可以更好地理解代码。
  • 我想这是一个答案:) 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多