【问题标题】:Not sure where to put the java code to prevent column disordering不知道在哪里放置java代码以防止列乱序
【发布时间】:2019-02-01 02:56:04
【问题描述】:

我有以下代码:我想防止列标题被重新排序。我不确定在哪里放置以下代码来执行此操作以及我需要放置的括号(如果有的话):

table.getTableHeader().setReorderingAllowed(false);

下面是我的代码

public class JavaApplication2 extends javax.swing.JFrame{

    String driverName = "net.sourceforge.jtds.jdbc.Driver";
    String serverName = "xx";
    String serverPort = "xx";
    String database = serverName + ":" + serverPort;
    String url = "jdbc:jtds:sqlserver:/" + database;
    String username = "xx";
    String password = "xx";

    public JavaApplication2() throws SQLException {
           ArrayList columnNames = new ArrayList();
           ArrayList data = new ArrayList();


    try {

        Class.forName(driverName);
        Connection connection = DriverManager.getConnection(url, username, password);

        // Create and execute an SQL statement that returns some data.
        String SQL = "xx";
        Statement stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery(SQL);
        ResultSetMetaData  rsmetadata = rs.getMetaData();

        int columns = rsmetadata.getColumnCount();


        //  Get column names
            for (int i = 1; i <= columns; i++)
            {
            boolean add;
            add = columnNames.add( rsmetadata.getColumnName(i) );
            }

            //  Get row data
            while (rs.next())
            {
                ArrayList row;
            row = new ArrayList(columns);

                for (int i = 1; i <= columns; i++)
                {
                    boolean add;
                    add = row.add( rs.getObject(i) );
                }

            boolean add;
            add = data.add( row );
            }
        }
        catch (SQLException e)
        {
            System.out.println( e.getMessage() );
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(JavaApplication2.class.getName()).log(Level.SEVERE, null, ex);
        }


        Vector columnNamesVector = new Vector();
        Vector dataVector = new Vector();

        for (int i = 0; i < data.size(); i++)
        {
            ArrayList subArray = (ArrayList)data.get(i);
            Vector subVector = new Vector();
            for (int j = 0; j < subArray.size(); j++)
            {
                boolean add;
                add = subVector.add(subArray.get(j));
            }
               boolean add;
               add = dataVector.add(subVector);
        }

    for (int i = 0; i < columnNames.size(); i++ ){
         boolean add ;
         add = columnNamesVector.add(columnNames.get(i));
  }

        //  Create table with database data    
        JTable table;
            table = new JTable(dataVector, columnNamesVector)

                //table.getTableHeader().setReorderingAllowed(false)
                    //table.tableHeader.reOrderingAllowed(false);
            {



        public Class getColumnClass(int column)
        {
            for (int row = 0; row < getRowCount(); row++)
            {
                Object o = getValueAt(row, column);

                if (o != null)
                {
                    return o.getClass();
                }
            }

            return Object.class;
        }
    };


        JScrollPane scrollPane = new JScrollPane( table );
        getContentPane().add( scrollPane );

        JPanel buttonPanel = new JPanel();
        getContentPane().add( buttonPanel, BorderLayout.SOUTH );


    }


}

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以在定义表格后致电table.getTableHeader().setReorderingAllowed(false);

    在您的代码中,您已经声明并初始化了表。

        JTable table;
         // start of creating table
         table = new JTable(dataVector, columnNamesVector){
    
          public Class getColumnClass(int column)
          {
            for (int row = 0; row < getRowCount(); row++)
            {
                Object o = getValueAt(row, column);
    
                if (o != null)
                {
                    return o.getClass();
                }
            }
    
            return Object.class;
          }
       };
      //end of creating table
    

    因此您可以在该行之后调用table.getTableHeader().setReorderingAllowed(false);。在您的代码中,您调用 setReorderingAllowed 的位置不正确,因为它位于创建表的内部。public Class getColumnClass 方法位于创建表的代码中。

    所以完整的代码是......

        JTable table;
    
         table = new JTable(dataVector, columnNamesVector){
    
          public Class getColumnClass(int column)
          {
            for (int row = 0; row < getRowCount(); row++)
            {
                Object o = getValueAt(row, column);
    
                if (o != null)
                {
                    return o.getClass();
                }
            }
    
            return Object.class;
          }
       };
    
     //call setReorderingAllowed here
    
    table.getTableHeader().setReorderingAllowed(false);
    

    【讨论】:

    • 谢谢你的解释,我对括号有这么多的麻烦,我觉得我不知道把东西放在哪里。我现在刚刚对此进行了测试,并且效果很好。回复晚了非常抱歉。 :D
    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2015-10-31
    • 2015-03-31
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多