java - jtextarea鼠标事件覆盖容器鼠标事件

标签 java swing resize mouseevent jtextarea

这是我的问题:我有一个 jpanel,其中包含三个面板。一个垂直分隔面板、一个聊天输出面板和一个聊天输入面板。主要的jpanel,chatpanel,实现了mousemotionlistener,并且有以下代码:

 public void mouseMoved(MouseEvent e) {
   int y = e.getY();

   //change cursor look if hovering over vertical spacer
   if(y >= (int)(verticalPanelSeperator.getLocation().getY()) && y <=    (int)(verticalPanelSeperator.getLocation().getY() + verticalPanelSeperator.getHeight())) {
       setCursor(Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
   }
   else {
       setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR ));
   }
}

public void mouseDragged(MouseEvent e) {
//vertical spacer can be draged up/down to change height of input/output areas
    if(getCursor().getType() == Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR).getType()) {
        int edge = (int)this.getLocation().getY();
        int cur = e.getY();
        int height = this.getHeight();
        output.setHeightPercent((((double)(cur-edge))/height));
        output.componentResized(new ComponentEvent(this, 1));
        input.setHeightPercent((((double)(height-cur-edge))/height));
        input.componentResized(new ComponentEvent(this, 2));
        e.consume();
    }
}

问题是,由于某种原因,当您将鼠标移动到verticalpanelseperator上时,它会更改为调整大小光标,但是当您向上移动它而不拖动时,它会保持为调整大小光标。此外,从 print 语句来看,当鼠标进入聊天输出时,e.getY() 的值不会增加,它保持在 Verticalseperatorpanel 的范围内。就像聊天输出默认鼠标监听器覆盖了聊天面板上的鼠标监听器并且不执行任何操作。有人可以告诉我这是怎么回事以及如何解决这个问题吗?

最佳答案

MouseListener 只会响应其容器的鼠标事件,只要没有其他容器正在监视其上方的鼠标事件。将鼠标事件视为雨滴。如果你在你和雨滴之间撑起一把伞,雨滴就不会到达你身上。

我建议您应该使用 MouseListener 接口(interface)中的 mouseEntermouseExit 并将其直接注册到 verticalPanelSeperator 上

关于java - jtextarea鼠标事件覆盖容器鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15777247/

相关文章:

java - 如何首先调用 swingworker 的执行方法,最后调用剩余代码这是我的代码 :-

html - 缩放表格宽度以适合列,无需调整列大小以适合表格

Java Swing : Setting a JTextArea to Null After Method

javascript - 可能/如何在鼠标焦点上调整 iframe 大小?

html - 根据窗口大小调整字体大小

JavaFX:位置未设置

Java流API : Optional if not null proceed

java - 在 Spring Boot 应用程序中修改 Activity 配置文件并刷新 ApplicationContext 运行时

java - linux:ps 截断命令行输出

java - JPanel 在绘制图像时显示奇怪的错误