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



我的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);

似乎在说

"从列表中删除第i个元素,然后测试x, y是否在其中"

您想在删除第i个元素之前测试它是否被选中。

相关内容

  • 没有找到相关文章

最新更新