Sil*_*eak 13 java layout swing tooltip
我试图在组件的工具提示中显示多个图像,找到createToolTip()
并实现了一个自定义,添加了所需的组件,如下所示:
setComponent(component);
JPanel images = new JPanel(null);
images.setLayout(new BoxLayout(images, BoxLayout.X_AXIS));
for(ImageIcon icon:myIcons) {
images.add(new JLabel(icon));
}
JPanel content = new JPanel(new BorderLayout());
content.add(new JLabel(title), BorderLayout.NORTH);
content.add(new JLabel(description));
content.add(images, BorderLayout.SOUTH);
add(content);
Run Code Online (Sandbox Code Playgroud)
但是,我看到的只是一个小点,表示显示了工具提示,但不知何故忽略了大小.我错过了实施自定义工具提示的内容?
And*_*son 15
工具提示可以呈现HTML.如果你可以为图像形成URL(如果它们是在内存中生成的,则不实用,但通常也可以这样做),编写一些可以加载图像的HTML并使用该HTML作为工具提示是一件容易的事.
例如
import javax.swing.*;
class MultiIconToolTip {
public static void main(String[] args) throws Exception {
final String html =
"<html><body>" +
"<img src='" +
"http://i.stack.imgur.com/OVOg3.jpg" +
"' width=160 height=120> " +
"<img src='" +
"http://i.stack.imgur.com/lxthA.jpg" +
"' width=160 height=120>" +
"<p>Look Ma, no hands!";
SwingUtilities.invokeLater( new Runnable() {
public void run() {
JLabel hover = new JLabel("Point at me!");
hover.setToolTipText(html);
JOptionPane.showMessageDialog(null, hover);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
kle*_*tra 12
基本的"问题"是JToolTip
绕过这些限制基本上是推动小部件几乎超越边缘.一个干净的解决方案将滚动一个新的组件..另一方面,OP已经找到螺丝进行调整.唯一可以略微改进的是既不调用setXXSize,也不设置自定义ui.相反,通过重写getXXSize()使其行为像容器:
@Override
public Dimension getPreferredSize() {
if (getLayout() != null) {
return getLayout().preferredLayoutSize(this);
}
return super.getPreferredSize();
}
Run Code Online (Sandbox Code Playgroud)