6
我有一個包含JButtons和一些其他東西的JPanel,我希望整個面板都有一個工具提示。當我在JPanel上調用setToolTipText時,工具提示只出現在JPanel中的空白處。如何在JPanel及其子項上設置工具提示?
有沒有辦法在JPanel上設置一個工具提示,使其適用於JPanel及其子項,還是我堅持在所有子項上調用setToolTipText?
我有一個包含JButtons和一些其他東西的JPanel,我希望整個面板都有一個工具提示。當我在JPanel上調用setToolTipText時,工具提示只出現在JPanel中的空白處。如何在JPanel及其子項上設置工具提示?
有沒有辦法在JPanel上設置一個工具提示,使其適用於JPanel及其子項,還是我堅持在所有子項上調用setToolTipText?
創建遞歸方法:
public static void setToolTipRecursively(JComponent c, String text) {
c.setToolTipText(text);
for (Component cc : c.getComponents())
if (cc instanceof JComponent)
setToolTipRecursively((JComponent) cc, text);
}
完整的示例:
public static void main(String[] args) {
final JFrame frame = new JFrame("Test");
frame.add(new JLabel("Testing (no tooltip here)"), BorderLayout.NORTH);
final JPanel panel = new JPanel(new GridLayout(2, 1));
panel.setBackground(Color.RED);
panel.add(new JLabel("Hello"));
panel.add(new JTextField("World!"));
setToolTipRecursively(panel, "Hello World!");
frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
在此解決方案中,工具提示閃爍並更改位置時子組件之間的交叉。我已經發布了關於如何將容器視爲單個單元的後續問題:http://stackoverflow.com/q/8592264/411282 –
很難說了更好的東西... http://stackoverflow.com/questions/7138914/swing-如何創建自定義jtooltip-like-widget-that-move-with-the-mouse/7139057#comment-8561297,但也許我是wong – mKorbel