Witam, mam w programie kilka tabel...Interesuje mnie szczególnie jedna, w której po najechaniu myszka na jakąś komórkę (Cell) obok strzałki myszy ma się wyświetlać jakiś tam tekst pobierany z bazy danych...W czym rzecz: nie wiem jak zastosować odpowiedni kod...Przeszukałem neta, jest dużo informacji ale nie mogę jakoś zastosować tego do mojego kodu....Oto fragment mojego kodu:
private void jPanel7ComponentShown(java.awt.event.ComponentEvent evt) {
zapytanie="SELECT * FROM L_godzin";
tModel=new Pobranie_tabel(jComboBox1).Pobierz_model(zapytanie, "L_godzin");
TableGodziny.setModel(tModel);
//TableGodziny.setToolTipText(zapytanie);
JTableHeader header = TableGodziny.getTableHeader();
header.setBackground(Color.lightGray);
ButtonUsun.setEnabled(true);
ButtonDodajRekord.setEnabled(true);
ButtonAktualizuj.setEnabled(true);
}
Tabela pobiera model w momencie gdy panel, na ktorym sie znajduje, jest wyświetlany...Pytanie czy w tym miejscu dopisać jakiś kod czy w klasie, w której pobierany jest model:
public DefaultTableModel Pobierz_model(String zapytanie, String tableName)
{
String query=zapytanie;
relacja=new String(tableName);
ResultSet rs = null;
DefaultTableModel tModel=null;
try
{
rs = Polaczenie.conn.createStatement().executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
String[] colHeaders = new String[colCount];
tModel = new DefaultTableModel()
{
@Override
public boolean isCellEditable(int rowIndex, int columnIndex)
{
if(relacja.equals("Stanowisko"))
{
if(columnIndex==0) return false;
}
else if(relacja.equals("Dzial"))
{
if(columnIndex==0) return false;
}
else if(relacja.equals("Pracownik"))
{
if(columnIndex==0) return false;
}
else if(relacja.equals("L_godzin"))
{
if(columnIndex==0) return false;
if(columnIndex==1) return false;
}
return true;
}
};
for(int i=0;i<colCount;i++)
{
colHeaders[i] = rsmd.getColumnName(i+1);
combo_sortowanie.addItem(colHeaders[i]);
}
tModel.setColumnIdentifiers(colHeaders);
while(rs.next())
{
Object[] obj = new Object[colCount];
for(int i=0;i<colCount;i++)
{
obj[i] = rs.getObject(i+1);
}
tModel.addRow(obj);
}
}
catch(Exception ex)
{
JOptionPane.showMessageDialog(null,"Nie mozna pobrac danych z bazy: "+ex.getMessage(),"ERROR", JOptionPane.ERROR_MESSAGE);
}
return tModel;
}
}
Znalazłem na necie taki kod (sprawdzałem - działa):
public class CellToolTips{
JTable table;
public static void main(String[] args) {
new CellToolTips();
}
public CellToolTips(){
JFrame frame = new JFrame("Setting Tool Tips on Cells in a JTable!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
String data[][] = {{"Vinod","MCA","Computer"},
{"Deepak","PGDCA","History"},
{"Ranjan","M.SC.","Biology"},
{"Radha","BCA","Computer"}};
String col[] = {"Name","Course","Subject"};
DefaultTableModel model = new DefaultTableModel(data,col);
table = new JTable(model){
public Component prepareRenderer(TableCellRenderer renderer,int row, int col) {
Component comp = super.prepareRenderer(renderer, row, col);
JComponent jcomp = (JComponent)comp;
if (comp == jcomp) {
jcomp.setToolTipText((String)getValueAt(row, col));
}
return comp;
}
};
JTableHeader header = table.getTableHeader();
header.setBackground(Color.yellow);
JScrollPane pane = new JScrollPane(table);
panel.add(pane);
frame.add(panel);
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
frame.setSize(500,150);
frame.setVisible(true);
}
}
NIe wiem tylko gdzie zastosować te metode aby u mnie działała...Może ktoś pomóc??? Będę wdzięczny...