3

我想将气球提示添加到Cellin JTable,其行为类似于Tooltips。我的意思是当鼠标进入时Cell它会在一段时间后出现并消失(与Tooltips但不是 a相同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我想要的工作。有什么建议么?

4

1 回答 1

1

我认为问题在于您将气球提示附加到新创建的 JLabel 上...

...尝试将其添加到您的 renderCellCopponent 中:

@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;
}

我希望这行得通...

于 2015-05-05T07:22:13.317 回答