sách gpt4 ai đã đi

java - 将 JPanel 内容复制到另一个 JPanel,而不删除原始 JPanel 的内容

In lại 作者:太空宇宙 更新时间:2023-11-04 14:45:41 27 4
mua khóa gpt4 Nike

我是 Java swing 编码新手。我正在尝试将 JPanel 内容复制到一个新的 JPanel,它使用原始 JPanel 的内容来显示。此外,原始 JPanel 内容随着记录的变化而变化。我尝试了以下代码,但完全没用。

public void addPanel(JPanel jp)
{
JPanel jp1=new JPanel();
int count=jp.getComponentCount()-1;
for(;i>=0;i--)
{
jp1.addComponent(jp.getComponent(i);
}
//after this I am setting bounds of jp1.
this.add(jp1);
}

如果我想将多个 JPanel 作为原始 JPanel 更改,则这不起作用。如果多次使用(例如在 for 循环中使用),它将覆盖 new 'jp' 的内容而不是 'jp1'。我不想删除原始 JPanel 的组件。我怎样才能做到这一点?

1 Câu trả lời

移动组件的实例是可能的,但应对它们需要您手动执行。

您可以通过创建原始类的新实例,然后使用 getter 的值调用 setter 来将其作为程序来执行此操作...但坦率地说,这是一种容易出错的方法,您需要对其进行反射除非确实必要,否则不应使用。

您可以做的是覆盖您使用的标准Java类(例如JLabel),并在您覆盖的类中实现Cloneable,在其中设置您需要的参数(文本、边界等),然后像这样调用你的函数:

public void addPanel(JPanel jp)
{
JPanel jp1=new JPanel();
int i=jp.getComponentCount()-1;
for(;i>=0;i--)
{
jp1.addComponent(
((Component) // this casts the clone back to component. This is maybe superfluous.
((Cloneable)jp.getComponent(i) // You have to ensure that all components that are returned are in fact instances of Cloneable.
).clone()
));
}
//after this I am setting bounds of jp1.
this.add(jp1);
}

如果您沿着这条路走下去,请务必阅读 Cloneable 的文档.

关于java - 将 JPanel 内容复制到另一个 JPanel,而不删除原始 JPanel 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406766/

27 4 0
Bài viết được đề xuất: c++ - 不匹配运算符[]
Bài viết được đề xuất: google-maps - 在更多 div 标签内的 div 标签内嵌入 Google map
Bài viết được đề xuất: html - 绝对 Div 被裁剪为负边距
Bài viết được đề xuất: c++ - 仅调用一次构造函数的数组初始化
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com