表模型未在Java中显示
在我的表格模型中,我给它数据,把它放在一个2d数组中,但它仍然没有显示出来。这个桌子模型在过去对我有效,所以我不知道为什么它不有效。使用此选项时不显示任何内容。我知道一个事实,数据2D数组正在获取其中的数据表模型未在Java中显示,java,abstracttablemodel,Java,Abstracttablemodel,在我的表格模型中,我给它数据,把它放在一个2d数组中,但它仍然没有显示出来。这个桌子模型在过去对我有效,所以我不知道为什么它不有效。使用此选项时不显示任何内容。我知道一个事实,数据2D数组正在获取其中的数据 public class Returns extends javax.swing.JFrame { SearchTableModel stm; public Returns() { stm = new SearchTableModel(); i
public class Returns extends javax.swing.JFrame {
SearchTableModel stm;
public Returns() {
stm = new SearchTableModel();
initComponents();
}
public void search(String query) {
stm.search(query);
}
@SuppressWarnings("unchecked")
private void initComponents() {
jScrollPane2 = new javax.swing.JScrollPane();
jTable2 = new javax.swing.JTable();
jTable2.setModel(stm);
jTable2.setMinimumSize(new java.awt.Dimension(200, 200));
jScrollPane2.setViewportView(jTable2);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 1255, Short.MAX_VALUE));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 651, Short.MAX_VALUE));
pack();
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Returns.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(() -> {
new Returns().setVisible(true);
});
}
public void setColumns(String... someColumns) {
stm.setColumns(someColumns);
}
public void setEdits(boolean... someEdits) {
stm.setEdits(someEdits);
}
public void setTypes(Class<?>... someTypes) {
stm.setTypes(someTypes);
}
public int dataSize() {
return stm.size();
}
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable2;
private class SearchTableModel extends KenTableModel {
protected com.kenergycorp.databases.DatabaseServer database;
public SearchTableModel() {
super();
try {
database = new com.kenergycorp.databases.MSSQL.LocalTestEnvironment();
}
catch (Exception e) {System.out.println("Failed db connection!");}
}
public void search(String query) {
database.query(query);
boolean found = false;
data = new ArrayList<Object[]>();
while (database.next()) {
ArrayList<String> returnVal = new ArrayList<>();
found = true;
for(String colName : column) returnVal.add(database.getValue(colName));
Object[] results = returnVal.toArray();
data.add(results);
}
if (!found) JOptionPane.showMessageDialog(null, "Search returned no matches.", "No results", JOptionPane.WARNING_MESSAGE);
else setVisible(true);
fireTableDataChanged();
System.out.println(data.size() + " " + column.length + " " + types.length + " " + editable.length);
}
public void setColumns(String[] someColumns) {
column = someColumns;
}
public void setTypes(Class<?>[] someTypes) {
types = someTypes;
}
public void setEdits(boolean[] someEdits) {
editable = someEdits;
}
public int size() {
return data.size();
}
}
}
public类返回扩展的javax.swing.JFrame{
扫描隧道显微镜;
公众报税表(){
stm=新的SearchTableModel();
初始化组件();
}
公共作废搜索(字符串查询){
搜索(查询);
}
@抑制警告(“未选中”)
私有组件(){
jScrollPane2=newjavax.swing.JScrollPane();
jTable2=newjavax.swing.JTable();
jTable2.setModel(stm);
jTable2.setMinimumSize(新java.awt.Dimension(200200));
jScrollPane2.setViewportView(jTable2);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2,javax.swing.GroupLayout.DEFAULT_SIZE,1255,Short.MAX_VALUE));
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane2,javax.swing.GroupLayout.DEFAULT_SIZE,651,Short.MAX_VALUE));
包装();
}
公共静态void main(字符串参数[]){
试一试{
for(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){
if(“Nimbus”.equals(info.getName())){
setLookAndFeel(info.getClassName());
打破
}
}
}catch(ClassNotFoundException |实例化Exception | IllegalacessException | javax.swing.UnsupportedLookAndFeelException ex){
getLogger(返回.class.getName()).log(java.util.logging.Level.SEVERE,null,ex);
}
java.awt.EventQueue.invokeLater(()->{
新返回().setVisible(true);
});
}
公共void setColumns(字符串…someColumns){
stm.setColumns(someColumns);
}
公共void setEdits(布尔…someEdits){
stm.setEdits(someEdits);
}
公共void集合类型(类…某些类型){
stm.setTypes(someTypes);
}
公共int dataSize(){
返回stm.size();
}
私有javax.swing.JScrollPane-jScrollPane2;
私有javax.swing.JTable jTable2;
私有类SearchTableModel扩展了KenTableModel{
受保护的com.kenergycorp.databases.DatabaseServer数据库;
公共搜索表模型(){
超级();
试一试{
database=new com.kenergycorp.databases.MSSQL.LocalTestEnvironment();
}
catch(异常e){System.out.println(“数据库连接失败!”);}
}
公共作废搜索(字符串查询){
数据库查询(query);
布尔值=false;
数据=新的ArrayList();
while(database.next()){
ArrayList returnVal=新的ArrayList();
发现=真;
for(String colName:column)returnVal.add(database.getValue(colName));
Object[]results=returnVal.toArray();
数据。添加(结果);
}
如果(!found)JOptionPane.showMessageDialog(null,“搜索未返回匹配项”,“无结果”,JOptionPane.WARNING\u消息);
else setVisible(true);
fireTableDataChanged();
System.out.println(data.size()+“”+column.length+“”+types.length+“”+editable.length);
}
公共void setColumns(字符串[]someColumns){
column=someColumns;
}
公共void集合类型(类[]某些类型){
类型=某些类型;
}
公共void setEdits(布尔值[]someEdits){
可编辑=一些编辑;
}
公共整数大小(){
返回data.size();
}
}
}
您调试应用程序了吗?我猜search()
填充了模型,但我看不到它在任何地方被调用。另外,我不知道KenTableModel
,所以很难说是否有错误的配置等。搜索在另一个类中被调用。执行搜索方法。我看到数据并将其添加到数据2d数组中…您是否看到表格,即列等设置是否正确?没有。没有栏目。不是数据。无…尝试检查表本身是否正在显示,是否调用了getColumnName(int)
等。这可能是由于表模型配置错误、ui配置错误/缺失(例如,jScrollPane2
可能未添加到框架中)等原因造成的。