我在Java中创建了一个程序,您可以在其中绘制椭圆和矩形,然后将它们分组以对它们执行“调整大小”和“移动”操作。
我将MouseListener
添加到DrawPanel(JPanel)
作为所有创建的形状(该drawPanel上的组件)。但是在我将几个形状组合在一起后,似乎向后推MouseListener
并且MouseListener
与MainFrame
相关联。
我已经解决了JPanel
上的调用.GetCompontent()函数的问题。但肯定可以推进组件MouseListener
?
JPanel
及其上的组件都使用相同的MouseListener
public class MainFrame extends JFrame implements ActionListener,MouseInputListener {
public MainFrame() {
super("Tekenprogramma");
//some other stuf
drawPanel.addMouseListener(this);
drawPanel.addMouseMotionListener(this);
}
并在同一类中创建和添加形状时:
public void mousePressed(MouseEvent e) {
if(e.getSource() == drawPanel) {
Point pos = e.getPoint();
switch(mode) {
//Some other cases...
case RECTANGLE:
shape = new Rectangle(pos);
shape.addMouseListener(this);
shape.addMouseMotionListener(this);
storeAndExecute(new RectangleCommand(drawPanel,shape));
最初,形状会对自己的听众做出反应。但是在我删除并阅读它们之后(嵌套在没有MouseListener
(组)的组件中)它们会停止触发并且drawPanel
的{{1}}接管。