java - 在布局内的组件上 Swing getLocationOnScreen 方法

标签 java swing layout awt

需要帮助:

我尝试对放置在 FlowLayout 内的每个组件调用 getLocationOnScreen() 并最终获得相同的位置。

这是设计使然还是我做错了什么?那么我应该如何获取每个组件的确切位置?

这是我刚刚创建的示例

JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
frame.getContentPane().add(panel);

for (int i = 0; i < 4; i++) {
    JLabel label = new JLabel("Label " + i);
    panel.add(label);
    System.out.println("getLocationOnScreen-" + i
        + " x:" + label.getLocationOnScreen().x
        + " y:" + label.getLocationOnScreen().y);           
}

它在控制台中打印为:

getLocationOnScreen-0 x:0 y:44
getLocationOnScreen-1 x:0 y:44
getLocationOnScreen-2 x:0 y:44
getLocationOnScreen-3 x:0 y:44

如果您能对此提供帮助,我们将不胜感激! 谢谢!

最佳答案

基于this comment :

... the actual use case would be showing a ballon popup related to the label in the layout.

您似乎有一个 XY problem :您正在询问组件在屏幕上的位置,但您真正想做的是为每个标签显示一个弹出气球。

Swing 内置了这样的功能,称为工具提示。看看How to Use Tool Tips学习如何使用它们的类(class)。

此外,正如 @peeskillet 建议的那样,有一个名为 Balloon tip 的第三方库可用。值得一看。

关于java - 在布局内的组件上 Swing getLocationOnScreen 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26488897/

相关文章:

java - Spring Boot测试配置

java - 将 JLabels 和 JTextField 与 JTable 放在同一框架中

java - 在 onClick 上切换布局的可见性

html 列样式和边框 css

html - 为什么我的 Chrome 表格单元格宽度错误?

java - JFrame 类型的 createGUI() 方法未定义

java - 如何使用JCommander

java - 我需要做什么来解释这个 Java 程序?

java - JFrame DO_NOTHING_ON_CLOSE 不适用于 Command + Q

java - 如何轻松编辑 JTextPane 中选定文本的样式?