表模型未在Java中显示

表模型未在Java中显示,java,abstracttablemodel,Java,Abstracttablemodel,在我的表格模型中,我给它数据,把它放在一个2d数组中,但它仍然没有显示出来。这个桌子模型在过去对我有效,所以我不知道为什么它不有效。使用此选项时不显示任何内容。我知道一个事实,数据2D数组正在获取其中的数据 public class Returns extends javax.swing.JFrame { SearchTableModel stm; public Returns() { stm = new SearchTableModel(); i

在我的表格模型中,我给它数据,把它放在一个2d数组中,但它仍然没有显示出来。这个桌子模型在过去对我有效,所以我不知道为什么它不有效。使用此选项时不显示任何内容。我知道一个事实,数据2D数组正在获取其中的数据

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
可能未添加到框架中)等原因造成的。