新しいコントロールを動的に作成し、マウスで移動できる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(); }