通过mosemotionliistner控制的JLabel返回到原始位置,当另一个jlabel(不受鼠标控制)进入并离开JFrame时

时间:2015-07-24 15:54:51

标签: java swing jframe jlabel mousemotionlistener

我正在制作类似于狂热的游戏。我正在使用╔════╦════════════╦════════════╦═════════════╦════════════╗ ║ id ║ field_1 ║ field_2 ║ field_n ║ time ║ ╠════╬════════════╬════════════╬═════════════╬════════════╣ ║ 1 ║ data_field ║ data_field ║ data_field ║ 1369748934 ║ ║ 2 ║ data_field ║ data_field ║ data_field ║ 1369748935 ║ ║ 3 ║ data_field ║ data_field ║ data_field ║ 1369748936 ║ ║ 4 ║ data_field ║ data_field ║ data_field ║ 1369748936 ║ ║ 5 ║ data_field ║ data_field ║ data_field ║ 1369748938 ║ ║ 6 ║ data_field ║ data_field ║ data_field ║ 1369748939 ║ ╚════╩════════════╩════════════╩═════════════╩════════════╝ mouseMotionListener周围移动JLabel。与此同时,还有其他JFrame作为其他鱼类被鼠标控制的JLabels吃掉。每当JLabel(不受鼠标控制)移入和移出屏幕时,鼠标控制的JLabel fish将返回屏幕上的标准位置,即上半部分的中心位置。屏幕。我该怎么做才能阻止这种情况发生?

JLabel

1 个答案:

答案 0 :(得分:1)

首先:

  1. 类名以大写字母开头。通过实例学习。只需查看Java API,您将看到所有类名都以大写字符开头。

  2. 不要在绘画方法中执行I / O.只要Swing确定需要重新绘制组件,就会调用绘制方法。每次读取文件效率都不高。创建课程时阅读图像。

  3. 不要对帧的大小进行硬编码 - board.setSize(1300, 700);并非所有人都使用相同的分辨率。要最大化框架,您可以使用:board.setExtendedState(JFrame.MAXIMIZED_BOTH);

  4.   

    返回屏幕上方的标准位置,即屏幕上半部分的中心

    默认情况下,JPanel使用FlowLayout。当您更改其他标签的位置时,布局管理器将被调用到布局管理器确定的位置中的组件。

    如果由于使用鼠标拖动组件而随机放置组件,则需要在面板上使用“null布局”。执行此操作时,您现在负责手动设置添加到面板的每个组件的“大小和位置”。