0

私はこれで2日間バグを抱えています。JTable2つのテーブルからSQLを使用して生成されているがあります。

Mouseover重要なのは、テーブルの1つから特定の情報を使用して、ツールチップを機能させる必要があるということです。そして、それは機能していません。

public class Ausgabe extends JPanel {

    public JPanel panel1;
    private Point hintCell;

    Main j;

    MA ali = new MA();

    public Ausgabe(Main j) {
        this.j = j;

    }

    public void createDefault (){
        panel1 = new JPanel();
        panel1.setLayout( null );

        JLabel lblDieseMitarbeiterSind = new JLabel("Diese Mitarbeiter sind Heute abwesend.");
        lblDieseMitarbeiterSind.setBounds(10, 11, 239, 14);
        panel1.add(lblDieseMitarbeiterSind);

        panel1.add(getHeute());
    }
    public JTable getHeute(){

            DBconnect verbinden = new DBconnect();
            verbinden.erstelleVerbindung();

            JTable Habwesend=new JTable();
            Habwesend.setBounds(10, 30, 200, 400);
            Habwesend.setEnabled(false);
            DefaultTableModel dm=new DefaultTableModel();

            try {
            ResultSet rs= verbinden.sqlStatement.executeQuery("select Vor, Nach from MA_Tabelle where MA_ID in (select distinct MA_ID from AB_Spanne where(Date() >= Start and Date() <= Ende)) ");
            ResultSetMetaData rsmd=rs.getMetaData();
            //Coding to get columns-
            int cols=rsmd.getColumnCount();
            String c[]=new String[cols];
            for(int i=0;i<cols;i++){
                c[i]=rsmd.getColumnName(i+1);
                for (int k = 0; k < c.length; k++) {
                    dm.addColumn(c[k]);
                }


            }
            Object row[]=new Object[cols];
            while(rs.next()){
                for(int i=0;i<cols;i++){
                        row[i]=rs.getString(i+1);
                    }
                dm.addRow(row);

            }

            Habwesend.setModel(dm);
            Habwesend.setToolTipText(getToolTipText((MouseEvent) verbinden.sqlStatement.executeQuery("select Start, Ende from AB_Spanne where MA_ID = "+rs)));
            verbinden.schliesseVerbindung();


            }catch(SQLException e){
                System.out.println("this failed");
                System.out.print(e);
            }
            return Habwesend;
        }

    public String result() {
        // TODO Auto-generated method stub
        return null;
    }
}

誰かが私を助けてくれることを願っています。

前もって感謝します。

4

2 に答える 2

1

コードでは、テーブル全体に単一のツールチップテキストを設定して、すべてのセルで同じになるようにします。

代わりに、メソッドから派生したカスタムテーブルクラスを使用してJTable、メソッドをオーバーライドします

@Override
public String getToolTipText(MouseEvent e) {
    Point where = e.getPoint();
    int column = columnAtPoint(where);
    int row = rowAtPoint(where);

    // now run your SQL to get the tooltip text
    ...
    return tooltip;
}
于 2013-01-17T08:52:43.150 に答える
1

JTable、レンダラーに設定されたツールチップ テキストを尊重します。getToolTipTextのをオーバーライドする必要はありませんJTable

ツールチップを指定するレンダラーを使用します。ただし、アプリケーションの速度が低下するため、レンダラーで SQL クエリを実行しないことを強くお勧めします。通常、データベース クエリはバックグラウンド スレッドで実行され、結果がモデルにフィードされ、その時点でビューを更新します。詳細については、Swing の同時実行のチュートリアルを参照してください。

于 2013-01-17T11:16:55.480 に答える