gpt4 book ai didi

Java:单击按钮时如何删除特定对象

转载 作者:行者123 更新时间:2023-12-02 05:35:20 26 4
gpt4 key购买 nike

我试图通过单击对象的按钮来删除对象,但是当我单击面板内的按钮时,会发生什么情况,它会删除最后创建的面板。

问题是如何删除我想要的特定面板?

这是我的代码:

public class TimerPractice extends JFrame implements ActionListener
{
JPanel main=new JPanel();
JPanel gui=new JPanel();
JButton btnadd=new JButton("Add Timer");
JPanel order=new JPanel();

public TimerPractice()
{

main.setLayout(new BorderLayout());
gui.setLayout(new FlowLayout());
main.add(btnadd, BorderLayout.NORTH);
main.add(gui,BorderLayout.CENTER);
add(main);
btnadd.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
//addPanel();
//System.out.print(x);
addPanel();
revalidate();
repaint();
}
});

main.add(gui);
}


public void addPanel()
{
Border blackline=BorderFactory.createLineBorder(Color.BLACK);
order=new JPanel();
order.setPreferredSize(new Dimension(200,300));
order.setLayout(new BorderLayout());
TitledBorder title=BorderFactory.createTitledBorder(blackline);
title.setTitleJustification(TitledBorder.LEFT);
order.setBorder(title);
addBtn();
gui.add(order);
}

public void addBtn()
{
JButton remove=new JButton("Remove");
order.add(remove, BorderLayout.SOUTH);
remove.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
gui.remove(order);
revalidate();
repaint();
}
});
}

public static void main(String args[])
{
TimerPractice p=new TimerPractice();
p.setSize(1000,800);
p.setVisible(true);
p.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
p.setLocationRelativeTo(null);
}
}

最佳答案

每次添加新的order面板,您正在重新分配对 order 的引用指向最后创建的JPanel ,这意味着当您说 remove(order) 时,它只知道如何删除您创建的最后一个面板...

长答案,将每个分开order面板到它自己的、独立的和托管的实体中,这样您就不会遇到现在遇到的引用问题...

简短回答,从 ActionEvent 中提取引用文献...

public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source instanceof Component) {
Component comp = (Component)source;
gui.remove(comp.getParent());
revalidate();
repaint();
}
}

您可以使用 Action 生成一个独立的工作单元,您将传递 order 当前实例的引用。 ,这将允许 Action维护它自己的引用与 TimerPractice 分开类

关于Java:单击按钮时如何删除特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25028396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com