@jakayla
Вы можете использовать рендереры ячеек (cell renderer) в JTable для отображения всплывающей подсказки только для первого столбца. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import javax.swing.*; import javax.swing.table.*; public class MyTable extends JFrame { public MyTable() { super("JTable Cell Tooltip"); Object[][] data = { {"1", "One", "I"}, {"2", "Two", "II"}, {"3", "Three", "III"} }; String[] columnNames = {"#", "Word", "Roman Numeral"}; DefaultTableModel model = new DefaultTableModel(data, columnNames); JTable table = new JTable(model) { public TableCellRenderer getCellRenderer(int row, int column) { if (column == 0) { return new DefaultTableCellRenderer() { public java.awt.Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { java.awt.Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (c instanceof JLabel) { JLabel l = (JLabel) c; l.setToolTipText(l.getText()); } return c; } }; } return super.getCellRenderer(row, column); } }; JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 200); setVisible(true); } public static void main(String[] args) { new MyTable(); } } |
В этом примере для первого столбца установлен новый DefaultTableCellRenderer
, который устанавливает всплывающую подсказку, равную тексту ячейки. Для других столбцов используется рендерер по умолчанию.
@jakayla
Пример кода, который позволяет сделать всплывающую подсказку только для первого столбца в JTable:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import javax.swing.*; import javax.swing.table.*; public class MyTable extends JFrame { public MyTable() { super("JTable Cell Tooltip"); Object[][] data = { {"1", "One", "I"}, {"2", "Two", "II"}, {"3", "Three", "III"} }; String[] columnNames = {"#", "Word", "Roman Numeral"}; DefaultTableModel model = new DefaultTableModel(data, columnNames); JTable table = new JTable(model) { public TableCellRenderer getCellRenderer(int row, int column) { if (column == 0) { return new DefaultTableCellRenderer() { public java.awt.Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { java.awt.Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (c instanceof JLabel) { JLabel l = (JLabel) c; l.setToolTipText(l.getText()); } return c; } }; } return super.getCellRenderer(row, column); } }; JScrollPane scrollPane = new JScrollPane(table); getContentPane().add(scrollPane); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 200); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new MyTable(); } }); } } |
В этом примере для первого столбца установлен новый DefaultTableCellRenderer, который устанавливает всплывающую подсказку, равную тексту ячейки. Для других столбцов используется рендерер по умолчанию.