gpt4 book ai didi

java - 如何在Swing中设置tooltip的背景?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:45 25 4
gpt4 key购买 nike

我正在开发一个 Swing 应用程序,我需要在其中显示 JTree 节点的工具提示。节点代表某些任务并按顺序在独立线程中运行。我需要根据任务的当前状态更改工具提示。

我在扩展 JTree 的类中覆盖了 getToolTipText(MouseEvent e) 方法。这也显示了一个工具提示,但我的应用程序中其他组件的工具提示的外观与 Jtree 节点所显示的不同。

请参阅工具提示所需外观和感觉的附件图像。此工具提示在 JTabbedPane 上设置。 enter image description here

这是 Jtree 上显示的工具提示的屏幕截图: enter image description here

我尝试了 html 标签,但它不起作用。我还尝试使用以下代码设置 Jtree 节点工具提示的外观,但这也不起作用。我在下面使用的颜色代码与上面所需工具提示中显示的颜色代码相同:

UIManager.put("ToolTip.background", new ColorUIResource(255, 247, 200)); // The color is #fff7c8.
Border border = BorderFactory.createLineBorder(new Color(76,79,83)); // The color is #4c4f53.
UIManager.put("ToolTip.border", border);

谁能告诉我如何设置我的 JTree 工具提示,如上图所示?

最佳答案

您可以在树类中覆盖 JTreecreateToolTip 方法:

@Override
public JToolTip createToolTip()
{
JToolTip tooltip = super.createToolTip();
tooltip.setBorder(BorderFactory.createLineBorder(new Color(76,79,83)));
tooltip.setBackground(new Color(255, 247, 200));
return tooltip;
}

示例:

import java.awt.Color;
import java.awt.event.MouseEvent;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JToolTip;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;


public class Main
{

public static void main(String[] args)
{
JFrame frame = new JFrame("Tooltip Example");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Node root = new Node("Root", "Root Tooltip");
MyTree tree = new MyTree(root);
root.add(new Node("Child 1", "Tooltip 1"));
root.add(new Node("Child 2", "Tooltip 2"));
tree.setToolTipText(""); // The correct tooltips will be shown on each node.
frame.add(tree);

frame.setVisible(true);
}

}

class Node extends DefaultMutableTreeNode
{
String toolTip;

public Node(String name, String toolTip)
{
super(name);
this.toolTip = toolTip;
}
public String getToolTipText()
{
return toolTip;
}
}

class MyTree extends JTree
{
MyTree(TreeNode node)
{
super(node);
}

@Override
public JToolTip createToolTip()
{
JToolTip tooltip = super.createToolTip();
tooltip.setBorder(BorderFactory.createLineBorder(new Color(76,79,83)));
tooltip.setBackground(new Color(255, 247, 200));
return tooltip;
}

@Override
public String getToolTipText(MouseEvent event)
{
super.getToolTipText(event);
if(getRowForLocation(event.getX(), event.getY()) == -1)
return null;
TreePath path = getPathForLocation(event.getX(), event.getY());
return ((Node) path.getLastPathComponent()).getToolTipText();
}

}

关于java - 如何在Swing中设置tooltip的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26906039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com