我对JTable
不太了解,我正在尝试开发包含一个应用程序。
在应用中。我需要将JTable2
放在JTable1
内,jtable2
也需要具有行标题,并且我想直接从数据库中实现56个以上的列标题。我正在使用AbstractTableModel
因此,我需要您的帮助,以建议我如何做。
这是我使用的代码,类似于以下代码:
package sqgemcom;
import ch.swingfx.twinkle.NotificationBuilder;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import main.java.ch.swingfx.twinkle.style.theme.DarkDefaultNotification;
public class MyModel extends AbstractTableModel{
java.sql.ResultSetMetaData rsmd;
int colonne ;
int ligne;
ArrayList<Fpy> data = new ArrayList<Fpy>();
Fpy Fpy;
public MyModel(ResultSet rst)
{
try {
rsmd=rst.getMetaData();
colonne= rsmd.getColumnCount();
while(rst.next()){
Fpy= new Fpy(rst.getString(1),rst.getString(2),rst.getString(3),rst.getString(4),rst.getString(5),rst.getString(6),rst.getString(7));
data.add(Fpy);
ligne++;
}
} catch (SQLException e) {
new NotificationBuilder().withStyle(new DarkDefaultNotification()).withTitle("Erreur")
.withMessage("Model :impossible d'afficher la table, verifier votre connexion").withDisplayTime(3000).showNotification();
}
}
@Override
public int getRowCount() {
return ligne;
}
@Override
public int getColumnCount() {
return colonne;
}
@Override
public Object getValueAt(int lin, int col) {
Fpy e=data.get(lin);
String ch="";
switch (col)
{case 0:
ch=(e.getId()).toString() ;
break;
case 1:
ch=(e.getProduit()).toString();
break;
case 2:
ch=e.getOperation();
break;
case 3:
ch=(e.getQuantité_demarree()).toString() ;
break;
case 4:
ch=(e.getQuantité_complétée()).toString();
break;
case 5:
ch=(e.getSemaine()).toString();
break;
case 6:
ch=(e.getFpy()).toString() ;
break;
default:
break;
}
return ch;
}
public String getColumnName(int l) {
try {
return rsmd.getColumnName(l+1);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
这样的事情我希望能够在一个单元格内制作单元格,我的桌子就像一棵树:我有很多产品,每个产品都有2个代码,每个代码都有不同的单元格,我的意思是>
答案 0 :(得分:0)
需要行标题,并且我想直接从数据库中实现56个以上的列标题
您可以从ResultSet的元数据中获取列名:
String sql = "Select * from ???";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( sql );
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
Vector<Object> columnNames = new Vector<Object>(columns);
// Get column names
for (int i = 1; i <= columns; i++)
{
columnNames.addElement( md.getColumnName(i) );
}
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
// add ResultSet row data to the model
....
JTable table = new JTable( model );