Hallo zusammen,
ich bemühe mich gerade ein eigenes ToolTip einzubauen um es optisch etwas ansehnlicher zu gestalten.
Leider passiert es, dass das fenster des Tooltip beim ersten überfahren des Labels nicht die richtige Größe hat, sondern erst beim zweiten Mal.
Weiß vielleicht jemand woran das liegen könnte?
Besten Dank im Voraus
Underfaker
ich bemühe mich gerade ein eigenes ToolTip einzubauen um es optisch etwas ansehnlicher zu gestalten.
Leider passiert es, dass das fenster des Tooltip beim ersten überfahren des Labels nicht die richtige Größe hat, sondern erst beim zweiten Mal.
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolTip;
public class CustomTooltipSample extends JFrame {
private CustomLabel m_label;
public CustomTooltipSample() {
setTitle("Custom tooltip sample");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
m_label = new CustomLabel("My Label");
m_label.setToolTipText("<html>Yo, I am a tooltip with components!<br>This is a row<br>" +
"hey another row<br> wow a new row again</html>"); // activate tooltips for this component
add(m_label);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
JFrame frame = new CustomTooltipSample();
frame.setVisible(true);
}
});
}
private static class CustomLabel extends JLabel {
private CustomTooltip m_tooltip;
public CustomLabel(String text) {
super(text);
}
@Override public JToolTip createToolTip() {
if (m_tooltip == null) {
m_tooltip = new CustomTooltip();
m_tooltip.setComponent(this);
}
return m_tooltip;
}
}
private static class CustomTooltip extends JToolTip {
private JLabel label;
private JPanel panel;
public CustomTooltip() {
super();
label = new JLabel();
panel = new JPanel(new BorderLayout());
panel.setBackground(Color.WHITE);
panel.add(BorderLayout.CENTER, label);
setLayout(new BorderLayout());
add(panel);
}
@Override public Dimension getPreferredSize() {
System.out.println(panel.getPreferredSize());
return panel.getPreferredSize();
}
@Override public void setTipText(String tipText) {
if (tipText != null && !tipText.isEmpty()) {
label.setText(tipText);
} else {
super.setTipText(tipText);
}
}
}
}
Besten Dank im Voraus
Underfaker