我想将气球提示添加到JTable
中的Cell
中,其行为就像Tooltips
。我的意思是当鼠标进入Cell
时,它会在一段时间后出现和消失(与Tooltips
相同,但不是Tooltip
)。我试过这个,但没有按预期为我工作。
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
final JLabel lable = new JLabel(value.toString());
EdgedBalloonStyle style = new EdgedBalloonStyle(new Color(255, 253, 245),
new Color(64, 64, 64));
BalloonTip tooltipBalloon = new BalloonTip(lable, new JLabel(value.toString()), style, new LeftAbovePositioner(15, 10), null);
ToolTipUtils.balloonToToolTip(tooltipBalloon, 400, 2000);
return lable;
}
这什么也没做。我也试过这个
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
final JLabel lable = new JLabel(value.toString());
EdgedBalloonStyle style = new EdgedBalloonStyle(new Color(255, 253, 245), new Color(64, 64, 64));
TablecellBalloonTip tcb = new TablecellBalloonTip(table, new JLabel(value.toString()),
row, column, style, BalloonTip.Orientation.LEFT_ABOVE,
BalloonTip.AttachLocation.ALIGNED, 30, 10, false);
return lable;
}
这只是Balloon Tip
的工作,而不是我想要的。有什么建议吗?
我认为问题是您将气球尖端附加到新创建的 JLabel 上......
。尝试将其添加到渲染的CellCopmponent中:
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
final JLabel lable = new JLabel(value.toString());
EdgedBalloonStyle style = new EdgedBalloonStyle(new Color(255, 253, 245), new Color(64, 64, 64));
//look, here is your mistake: you append it onto a new JLabel
//TablecellBalloonTip tcb = new TablecellBalloonTip(table,
// new JLabel(value.toString()), row, column, style,
// BalloonTip.Orientation.LEFT_ABOVE,
// BalloonTip.AttachLocation.ALIGNED, 30, 10, false);
//instead append it on your rendered Component
TablecellBalloonTip tcb = new TablecellBalloonTip(table,
lable, // !!here!!
row, column, style, BalloonTip.Orientation.LEFT_ABOVE,
BalloonTip.AttachLocation.ALIGNED, 30, 10, false);
return lable;
}
我希望这能奏效...