У меня проблема с подсказкой в ячейке JTable. В моем настраиваемом ящике ячеек сделан вызов setToolTipText
. Но при падении на ячейку таблицы всплывающая подсказка не отображается в правильном положении, хотя текст прав. Любая идея о том, как установить положение tootip для ячейки таблицы для класса рендеринга ячейки.Проблема с JTable-подсказкой с позицией дисплея
P.S Я не могу опубликовать реальный код здесь. Благодаря
Edit: Пример кода
import java.awt.Color;
import bibliothek.extension.gui.dock.theme.EclipseTheme;
import bibliothek.gui.DockController;
import bibliothek.gui.dock.DefaultDockable;
import bibliothek.gui.dock.SplitDockStation;
import bibliothek.gui.dock.common.CControl;
import bibliothek.gui.dock.common.CGrid;
import bibliothek.gui.dock.common.DefaultSingleCDockable;
import bibliothek.gui.dock.common.intern.CDockable;
import bibliothek.gui.dock.common.theme.ThemeMap;
import bibliothek.gui.dock.station.split.SplitDockProperty;
import bibliothek.gui.dock.station.stack.tab.DefaultMenuLineLayoutFactory;
import bibliothek.gui.dock.station.stack.tab.MenuLineLayout;
import bibliothek.gui.dock.station.stack.tab.MenuLineLayoutOrder;
import bibliothek.gui.dock.station.stack.tab.TabPane;
import bibliothek.gui.dock.station.stack.tab.MenuLineLayoutOrder.Item;
import bibliothek.gui.dock.util.AppletWindowProvider;
import javax.swing.*;
public class aaa {
public static void main(String[] args){
try {
JFrame frame = new JFrame();
AppletWindowProvider window = new AppletWindowProvider(frame);
CControl control = new CControl(window,true);
frame.add(control.getContentArea());
control.setTheme(ThemeMap.KEY_ECLIPSE_THEME);
CGrid grid = new CGrid(control);
grid.add(10, 0, 62, 100, new DefaultSingleCDockable("AAA"));
grid.add(10, 0, 62, 100, new MyDock());
grid.add(0, 0, 38, 100, new DefaultSingleCDockable("CCC"));
control.getContentArea().deploy(grid);
frame.setBounds(20, 20, 400, 400);
frame.setVisible(true);
} catch(Exception e) {
e.printStackTrace();
}
}
private static class MyDock extends DefaultSingleCDockable {
TestPane pane;
public MyDock() {
super("BBB");
pane = new TestPane();
add(pane);
}
}
}
И класс TestPane
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.MouseEvent;
public class TestPane extends JPanel {
public TestPane() {
setLayout(new BorderLayout());
DefaultTableModel model = new DefaultTableModel(0, 10);
for (int row = 0; row < 10; row++) {
Object[] data = new Object[10];
for (int col = 0; col < 10; col++) {
data[col] = row + "x" + col;
}
model.addRow(data);
}
JTable table = new JTable(model) {
public Point getToolTipLocation(MouseEvent event) {
Point p = this.getMousePosition();
try{
int x = event.getX();//p.x;
int y = event.getY();//p.y;
//System.out.println("$$$$$$$$$$$$$x :- "+x+" , y :- "+y);
return new Point(x,y);
}catch(Exception e)
{
System.out.println("Exception "+e.getMessage());
}
return new Point(10, 10);
}
};
table.setDefaultRenderer(Object.class, new TestCellRenderer());
add(new JScrollPane(table));
}
public class TestCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
setToolTipText("Banana @ " + value.toString());
return super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
}
}
}
Какое правильное положение для всплывающей подсказки – Madhan
Опубликуйте хотя бы кусок кода (содержащий вызов setToolTipText). – Aleksandar
опубликуйте [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверенный пример) или [SSCCE] (http://www.sscce.org/) (короткий, самосохраненный, правильный пример) , – Madhan