データベースデータをJTableに表示していて、うまくいきました。私は瞬時にデータを更新するためにAbstractTableModelまたはDefaultTableModelを実装する必要があることを知りました。AbstractTableModelをJTableに実装しています。どのようにメソッドを追加するには?
getValueAt()で何を書きますかわかりません。 fireDataChanged()をどこに追加すればよいですか?すべての指導は、ありがとう!ありがとう!
私はこのコードで私のデータベースのデータを取得するために使用:
Vector columnNames = new Vector();
Vector data = new Vector();
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection ("jdbc:mysql://localhost:3306/watchlist","root","root");
String sql = "SELECT * FROM watchlist";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; i++)
{
columnNames.addElement(md.getColumnName(i));
}
int rowCount = md.getColumnCount();
while (rs.next())
{
Vector row = new Vector(rowCount);
for (int i=1; i <= rowCount; i++)
{
row.addElement(rs.getObject(i));
}
data.addElement(row);
}
rs.close();
stmt.close();
con.close();
}
catch(Exception e)
{
System.out.println(e);
}
マイAbstractTableModelに:ここで
public class MyTableModel extends AbstractTableModel
{
Vector columnNames = new Vector();
Vector data = new Vector();
public void connectionDB()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/watchlist","root","root");
String sql = "SELECT * FROM watchlist";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData md = rs.getMetaData();
}
catch(Exception e)
{
System.out.println(e);
}
}
public int getColumnCount()
{
return columnNames.size();
}
public int getRowCount()
{
return data.size();
}
public Object getValueAt()
{
return data;
}
public boolean isCellEditable(int row, int col)
{
return false;
}
}
公式チュートリアルを終了しましたか?チュートリアルで理解できないことがありますか? –
'public Object getValueAt() { リターンデータ。 .. .. あなたは何をしているのか考えていますか?少なくとも '@ Override'表記を使用してください。種類の備考のために –
ありがとう。私は何をしているのか分からないので、私は尋ねました。多くの例を見てきましたが、私はまだ完全に理解していません。 –