繁体   English   中英

Java:从ArrayList中删除元素并添加文本

[英]Java: Removing elements from an ArrayList and adding text

我在使用Graph绘图程序时遇到了麻烦,该程序将元素(绘制的矩形和椭圆)存储在ArrayList中。 我想从列表中删除特定的矩形和椭圆形,方法是先用鼠标左键选择元素,然后用鼠标右键将其删除。 但是,问题在于我的程序将删除矩形或椭圆形,而无需先通过鼠标左键选择它(即,我可以右键单击任何节点,并且在选择之前将其删除)。

我已经声明了GraphElements的ArrayList作为

ArrayList <GraphElement> element = new ArrayList<GraphElement>();

在MousePressListener中,我遇到的困难是(代码的setLabel部分与我的下一个问题有关):

for (int i = 0; i < element.size(); i++)
  {
  GraphElement el =  (GraphElement)element.get(i);
        el.isSelected(x, y); // isSelected method (functioning correctly) to check whether the coordinates are inside the bounds of the rectangle or ellipse
        if (el.isSelected(x,y))
        {                   
          if (event.getButton() == MouseEvent.BUTTON3) // delete a node
             element.remove(i).isSelected(x, y);
          if (setLabel)
         {
           el.setLabel(label);
           setLabel = false;
           repaint();
         }  
         }
}  

其次,我想在选定的矩形或椭圆形上添加标签。 在我的程序中,这是通过选择矩形或椭圆形来添加文本,将文本输入JTextField并选择JButton来应用更改来完成的。 但是,我的问题是在按下JButton之后,标签没有绘制在组件上。 我必须再次按下鼠标按钮才能显示文本。 我猜是因为我的MousePressListener中有setLabel。 但是我需要在添加文本之前选择元素,所以我不知道该怎么做。

这是标签的ActionListener:

  class addLabel implements ActionListener {
    public void actionPerformed(ActionEvent e) 
    {
        component.setLabel(labelField.getText());
    }
  }
  addLabel label = new addLabel();
  labelButton.addActionListener(label);

感谢您的帮助。 谢谢。

该语句看起来很可疑:

element.remove(i).isSelected(x, y);

好像在说

“从列表中删除第ith个元素,然后进行测试以查看x, y是否在其中”

您要在删除前测试是否选择了第ith个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM