⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 catalogtable.java

📁 一个用java写的地震分析软件(无源码)-used to write a seismic analysis software (without source)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        tableView.setSelectionBackground(Color.white);

// assign rowheader renderer (string type)
//        Debug.println("CatalogTable setting up RowHeader cell renderers/editors...");

        for (int i = 0; i<tableRowHead.getColumnCount(); i++) {
          TableColumn tc = tcm2.getColumn(i);
          tc.setHeaderRenderer(new TableHeaderRenderer());

          Class tmpclass = tableRowHead.getColumnClass(i);
          if (tmpclass.getName().equals("java.lang.String")) {
                  tc.setCellRenderer(new TextCellRenderer(font));
                  TextCellEditor textEditor = new TextCellEditor(font);
                  textEditor.getComponent().addMouseListener(new EditorMouseListener());
                  tc.setCellEditor(textEditor);
          }
          else if (tmpclass.getName().equals("java.lang.Double")) {
                  int indexViewToModel = tableRowHead.convertColumnIndexToModel(i);
                  int fractionWidth = tableModel.getColumnFractionDigits(indexViewToModel);
                  if (fractionWidth >= 0) {
                    if (fractionWidth > MAX_FRACTION_ELEMENTS - 1 ) fractionWidth = MAX_FRACTION_ELEMENTS - 1;
                    pattern = getNumberFormatPattern(fractionWidth);
                    if (numberRenderer[fractionWidth] == null) 
                      numberRenderer[fractionWidth] = new FormattedNumberRenderer(pattern);
                    if (numberEditor[fractionWidth] == null) { 
                      numberEditor[fractionWidth] = new FormattedNumberEditor_FW(pattern);
                      numberEditor[fractionWidth].getComponent().addMouseListener(new EditorMouseListener());
                    }
                    tc.setCellEditor(numberEditor[fractionWidth]);
                    tc.setCellRenderer(numberRenderer[fractionWidth]);
                  }
                  else if (fractionWidth < 0 ) {
                    tc.setCellEditor(numberEditor9);
                    tc.setCellRenderer(numberRenderer9);
                  }
          }
          else if (tmpclass.getName().equals("java.lang.Integer") || tmpclass.getName().equals("java.lang.Number") ||
                tmpclass.getName().equals("java.lang.Long") ) {
                  pattern = getNumberFormatPattern(0);
                  if (numberRenderer[0] == null) numberRenderer[0] = new FormattedNumberRenderer(pattern);
                  if (numberEditor[0] == null) {
                    numberEditor[0] = new FormattedNumberEditor_FW(pattern);
                    numberEditor[0].getComponent().addMouseListener(new EditorMouseListener());
                  }
                  tc.setCellEditor(numberEditor[0]);
                  tc.setCellRenderer(numberRenderer[0]);
//                  tc.setCellEditor(numberEditor7);
//                  tc.setCellRenderer(numberRenderer7);
          }
        }

        for (int i = 0; i<tableRowHead.getColumnCount(); i++) {
	    String name = tableRowHead.getColumnName(i);
            if (name.equalsIgnoreCase("datetime")) {
                TableColumn tc = tcm2.getColumn(i);
                tc.setCellRenderer(dtRenderer);
                tc.setCellEditor(dtEditor);
            }
// implemented code below as an example of renderering "deleted" solution ids differently.
	    else if (name.equalsIgnoreCase("id")) {
		DeletedRowCellNumberRenderer render = new DeletedRowCellNumberRenderer(tableModel);
		render.setDefaultBackgroundColor(Color.yellow);
                tcm2.getColumn(i).setCellRenderer(render);
	    }
        }
        tableRowHead.setDefaultRenderer(java.sql.Date.class, cdRenderer);
// end of renderer removal test aww
// size rowheader columns
//        Debug.println("CatalogTable sizing RowHead columns");        
        initColumnSizes(tableRowHead);

//        Debug.println("CatalogTable finished with renderer setup; final table setup");        
// setup rowheader selection/color attributes
        tableRowHead.setCellSelectionEnabled(false);
        tableRowHead.setRowSelectionAllowed(true);
        tableRowHead.setColumnSelectionAllowed(false);
        tableRowHead.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        tableRowHead.setForeground(Color.black);
        tableRowHead.setBackground(Color.yellow);
        tableRowHead.setSelectionForeground(Color.blue);
        tableRowHead.setSelectionBackground(Color.orange);
//      tableRowHead.setToolTipText("Key fields highlighted yellow (shift-click over cell resizes rowheader width)");

// size rowheader and put in scrollpane
        JScrollPane scrollpane = null;
        tableRowHead.setPreferredScrollableViewportSize(tableRowHead.getPreferredSize());
        if (tableView.getColumnCount() <= 0) {
          System.out.println("CatalogTable: tableView has no columns");
          scrollpane = new JScrollPane(tableRowHead);
        }
        else scrollpane = new JScrollPane(tableView);
        scrollpane.setRowHeaderView(tableRowHead);
        scrollpane.setCorner(JScrollPane.UPPER_LEFT_CORNER, tableRowHead.getTableHeader());

// add main table models event listeners
        tcm2.addColumnModelListener(tableView);
//        tcm2.getSelectionModel().addListSelectionListener(new TableEditListener());
//        tcm.getSelectionModel().addListSelectionListener(new TableEditListener());
        sorter.addTableModelListener(tableView);
        sorter.addMouseListenerToHeaderInTable(tableView); // Install a mouse listener in the TableHeader as the sorter UI.
// sync rowheader selection with main table cell selection
        tableView.getSelectionModel().addListSelectionListener(new TableEditListener());
        tableRowHead.getSelectionModel().addListSelectionListener(new TableRowHeadSelectionListener());
        tableView.getSelectionModel().addListSelectionListener(new TableViewSelectionListener());

        tableView.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent evt) {
                        int clickCount = evt.getClickCount();
                        int mask = evt.getModifiers();
//                        Debug.println("TV ClickCount:"+clickCount+" TV Editing? "+tableView.isEditing()+" Button: "+mask);
                        if ( mask == MouseEvent.BUTTON1_MASK && clickCount >= 4) {
                            System.out.println("Canceling edit");
                            tableView.editingCanceled(new ChangeEvent(tableView));
                            tableView.repaint();
                        }
                }
         });
 // aww test of mouse clicks
        tableRowHead.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent evt) {
//                        Debug.println("TRH ClickCount:" + evt.getClickCount() + " TRH Editing? " + tableRowHead.isEditing());
                        if ( (evt.getModifiers() == (MouseEvent.BUTTON1_MASK | InputEvent.SHIFT_MASK)) 
                                && evt.getClickCount() >= 1) {
                                resetRowColumnSizes(tableRowHead, tableRowHead.getSelectedRow());
                                resetRowHeader(tableRowHead, tableDB);
                            tableDB.revalidate();
                        }
//                        else System.out.println("Shift failed");
                }
         });

        tableView.addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent evt) {
//                        Debug.println("TV ClickCount:" + evt.getClickCount() + " TV Editing? " + tableView.isEditing());
                        if ( (evt.getModifiers() == (MouseEvent.BUTTON3_MASK | InputEvent.SHIFT_MASK)) 
                                && evt.getClickCount() >= 1) {
                                resetRowColumnSizes(tableView, tableView.getSelectedRow());
//                                resetRowHeader(tableRowHead, tableDB);
                              tableView.revalidate();
                              tableDB.revalidate();
                        }
//                        else System.out.println("Shift failed");
                }
         });
 // end of mouse click test aww

// add rowheader models event listeners
        tcm.addColumnModelListener(tableRowHead);
        sorter.addTableModelListener(tableRowHead);
        sorter.addMouseListenerToHeaderInTable(tableRowHead);

// size the table viewport
        tableView.setPreferredScrollableViewportSize(tableView.getPreferredSize());

        tableDB = scrollpane;
        return scrollpane;
    } // end of createTable() method

    public JScrollPane createTable(int fontSize) {
        if (fontSize > 0) this.fontSize = fontSize;
        return createTable();
    }

    public JScrollPane createTable(Font font) {
        if (font != null) this.font = font;
        return createTable();
    }

    public static String getNumberFormatPattern(int scale) {
      StringBuffer pattern = new StringBuffer("#0");
      if (scale > 0) {
        char [] frac = new char[scale];
        Arrays.fill(frac, '0');
        pattern.append('.');
        pattern.append(frac);
      }
      return pattern.toString();
    }

    protected void initColumnSizes(JTable table) {
        TableColumn column = null;
        Component comp = null;
        int headerWidth = 0;
        int cellWidth = 0;

        int colCount = table.getColumnCount();
        int rowCount = table.getRowCount();
// perhaps would be better to used subset for speed?
        int checkRows;
        if (rowCount > 200) checkRows = 200;  
        else checkRows = rowCount;
//        int padding = 0;
        for (int i = 0; i < colCount; i++) {
          column = table.getColumnModel().getColumn(i);
          comp = column.getHeaderRenderer().
                             getTableCellRendererComponent(
                                 table, column.getHeaderValue(), 
                                 false, false, 0, 0);
          headerWidth = comp.getPreferredSize().width;
          int maxCellWidth = 0;
          for (int j = rowCount-checkRows; j < rowCount; j++) {
            comp = table.getCellRenderer(j,i).
                             getTableCellRendererComponent(
                                 table, table.getValueAt(j,i),
                                 false, false, j, i);
            cellWidth = comp.getPreferredSize().width;
/*
            Insets insets =  ((Container) comp).getInsets();
            padding = insets.left + insets.right;
*/
            if (cellWidth > maxCellWidth) maxCellWidth = cellWidth;

          }
         
          column.setPreferredWidth(Math.max(headerWidth, maxCellWidth) + COLUMN_WIDTH_PADDING);
        }
    } 

    public boolean resetRowHeader(JTable table, JScrollPane scrollpane) {
        if (table == null || scrollpane == null) return false;
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        scrollpane.setRowHeaderView(table);
        scrollpane.setCorner(JScrollPane.UPPER_LEFT_CORNER, table.getTableHeader());
        return true;
    }

    public boolean resetRowColumnSizes(JTable table, int irow) {
        if (table == null) return false;
        int rowCount = table.getRowCount();
        if (irow < 0 || irow > rowCount) return false;
        TableColumn column = null;
        Component comp = null;
        int headerWidth = 0;
        int cellWidth = 0;
        int colCount = table.getColumnCount();
        for (int i = 0; i < colCount; i++) {
          column = table.getColumnModel().getColumn(i);
          comp = column.getHeaderRenderer().
                             getTableCellRendererComponent(
                                 table, column.getHeaderValue(), 
                                 false, false, 0, 0);
          headerWidth = comp.getPreferredSize().width;
          int maxCellWidth = 0;
          comp = table.getCellRenderer(irow,i).
                       getTableCellRendererComponent(
                       table, table.getValueAt(irow,i),
                       false, false, irow, i);
          cellWidth = comp.getPreferredSize().width;
          if (cellWidth > maxCellWidth) maxCellWidth = cellWidth;
          column.setPreferredWidth(Math.max(headerWidth, maxCellWidth) + COLUMN_WIDTH_PADDING);
        }
        return true;
    } 

    public int getRenderedCellWidth(JTable table, int irow, int icol) {
        if (table == null) return -1;
        int rowCount = table.getRowCount();
        if (irow < 0 || irow > rowCount) return -1;
        int colCount = table.getColumnCount();
        if (icol < 0 || icol > colCount) return -1;
        TableColumn column = table.getColumnModel().getColumn(icol);
        if (column == null ) return -1;
        Component comp = table.getCellRenderer(irow,icol).
                getTableCellRendererComponent(
                table, table.getValueAt(irow,icol),
                false, false, irow, icol);
        return comp.getPreferredSize().width + COLUMN_WIDTH_PADDING;
    } 

    public int getPreferredRowWidth(JTable table, int irow) {
        if (table == null) return -1;
        int rowCount = table.getRowCount();
        if (irow < 0 || irow > rowCount) return -1;
        TableColumn column = null;
        Component comp = null;
        int headerWidth = 0;
        int cellWidth = 0;
        int maxWidth = 0;
        int colCount = table.getColumnCount();
        for (int i = 0; i < colCount; i++) {
          column = table.getColumnModel().getColumn(i);
          comp = column.getHeaderRenderer().
                             getTableCellRendererComponent(
                                 table, column.getHeaderValue(), 
                                 false, false, 0, 0);
          headerWidth = comp.getPreferredSize().width;
          int maxCellWidth = 0;
          comp = table.getCellRenderer(irow,i).
                             getTableCellRendererComponent(
                                 table, table.getValueAt(irow,i),
                                 false, false, irow, i);
          cellWidth = comp.getPreferredSize().width;
          if (cellWidth > maxCellWidth) maxCellWidth = cellWidth;
          maxWidth += Math.max(headerWidth, maxCellWidth) + COLUMN_WIDTH_PADDING;
        }
        return maxWidth;
    }

    public int updateDB() {
        return tableModel.updateDB();
    }

 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -