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

📄 dbtable.java

📁 一个用java写的地震分析软件(无源码)-used to write a seismic analysis software (without source)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//		dtRenderer = datetimeNonNullRenderer;
		dtRenderer = datetimeRenderer;
	  }
	  else {
		renderer   = defaultNonNullRenderer;
		tsRenderer = timestampNonNullRenderer;
		dtRenderer = datetimeNonNullRenderer;
	  }

	  String className = table.getColumnClass(i).getName();
	  if (table.getColumnName(i).equalsIgnoreCase("DATETIME") ) {
		column.setCellRenderer(dtRenderer);
		column.setCellEditor(dtEditor);
	  }
	  else if (className.equals("java.lang.Number") || className.equals("java.lang.Long") ||
		className.equals("java.lang.Integer") ) {
		column.setCellRenderer(renderer);
		column.setCellEditor(numberEditor0);
	  }
	  else if (className.equals("java.lang.Double")) {
		column.setCellRenderer(renderer);
		column.setCellEditor(numberEditor9);
	  }
	  else if (className.equals("java.sql.Date") || className.equals("java.sql.Timestamp"))  {
		column.setCellRenderer(tsRenderer);
		column.setCellEditor(cdEditor);
	  }
	  else {
		column.setCellRenderer(renderer);
		column.setCellEditor(textEditor);
	  }
	}
//	Debug.println("DBTable finished with renderer setup; final table setup");	
    }

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

	int colCount = table.getColumnCount();
	int checkRows;
	int rowCount = table.getRowCount(); // perhaps would be better to used subset for speed?
	if (rowCount > 20) checkRows = 20;  
	else checkRows = rowCount;

        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;
	    if (cellWidth > maxCellWidth) maxCellWidth = cellWidth;

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


// add main table models event listeners
    private void addListeners() {
//	tableRowHead.getColumnModel().addColumnModelListener(tableView); 
//	tableView.getColumnModel().addColumnModelListener(tableRowHead);
//	sorter.addTableModelListener(tableView);
//	sorter.addTableModelListener(tableRowHead);

// Install a mouse listener in the TableHeader as the sorter UI.
	sorter.addMouseListenerToHeaderInTable(tableView);
// Install a mouse listener in the TableHeader as the sorter UI.
	sorter.addMouseListenerToHeaderInTable(tableRowHead);

	tableView.getSelectionModel().addListSelectionListener(new TableEditListener());

// sync scrolling table selection with any row header cell selection change.
	tableRowHead.getSelectionModel().addListSelectionListener(new TableRowHeadSelectionListener());
// sync row header selection with any scrolling table cell selection change.
	tableView.getSelectionModel().addListSelectionListener(new TableViewSelectionListener());

// click mouse button 1 >= 4 times over tableView cell to cancel cell editing
	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) {
//			    Debug.println("Canceling edit");
			    tableView.editingCanceled(new ChangeEvent(tableView));
			    tableView.repaint();
			}
		}
	 });

// shift click mouse button 1 on any tableRowHead cell to resize table row header columns
	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) {
//			Debug.println("TRH reset RowHeaderColumnSizes");
    			    resetRowHeader();
			}
//			else System.out.println("Shift failed");
		}
	 });

    }

    public boolean resetRowHeader() {
	if (tableDB == null) return false;
	JTable table = (JTable) tableDB.getRowHeader().getView();
	resetRowHeaderColumnSizes(table.getSelectedRow());
	table.setPreferredScrollableViewportSize(table.getPreferredSize());
	tableDB.setRowHeaderView(table);
	tableDB.setCorner(JScrollPane.UPPER_LEFT_CORNER, table.getTableHeader());
	tableDB.revalidate();
	return true;
    }
/*
    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;
    }
*/
    private boolean resetScrollingTableColumnSizes(int irow) {
	return TableCell.resetRowColumnSizes(tableView, irow);
    }
    private boolean resetRowHeaderColumnSizes(int irow) {
	return TableCell.resetRowColumnSizes(tableRowHead, irow);
    }

    public void stopAllCellEditing() {
	if (tableView == null) return;
	if (tableView.isEditing()) {
	     tableView.getCellEditor().stopCellEditing();
	}
	if (tableRowHead == null) return;
	if (tableRowHead.isEditing()) {
	     tableRowHead.getCellEditor().stopCellEditing();
	}
    }

// Implementation of Listener interface
// Double click mouse button 2 to stop (end) cell edit
// Double click mouse button 3 to cancel cell edit

    private class EditorMouseListener extends MouseAdapter {
	public void mousePressed(MouseEvent evt) {
//	Debug.println("EML ClickCount:" + evt.getClickCount());
	    if ( evt.getModifiers() == MouseEvent.BUTTON3_MASK && evt.getClickCount() == 2) {
//		Debug.println("EML Canceling edit");
		tableView.editingCanceled(new ChangeEvent(tableView));
		tableView.repaint();
	    }
	    else if ( evt.getModifiers() == MouseEvent.BUTTON2_MASK && evt.getClickCount() == 2) { 
//		Debug.println("EML Stopping edit");
		tableView.editingStopped(new ChangeEvent(tableView));
//		tableView.repaint();
	    }
	}
    }

    private class TableEditListener implements ListSelectionListener {
      public void valueChanged(ListSelectionEvent e) {
/*
	Object obj = e.getSource();
//	Debug.println("Source: " + e.getSource() );
	Component [] cmps = tableView.getComponents();
	for (int i  = 0; i<cmps.length; i++) {
//	    Debug.println(cmps[i].getClass().getName());
	    Component [] cmps2 = ((CellRendererPane)cmps[i]).getComponents();
	    for (int j  = 0; j<cmps2.length; j++) {
//	        Debug.println(cmps2[i].getClass().getName());
	    }
	}
*/
//	if (tableView.isEditing()) tableView.editingCanceled(new ChangeEvent(tableView));
	if (tableView.isEditing()) tableView.editingStopped(new ChangeEvent(tableView));
      }
    }

    private class TableRowHeadSelectionListener implements ListSelectionListener {
      public void valueChanged(ListSelectionEvent e) {
	int irow1 = tableRowHead.getSelectedRow();
	int irow2 = tableView.getSelectedRow();
	if (irow1 != irow2 && irow1 >= 0) {
//	    tableView.clearSelection(); 
	    tableView.setRowSelectionInterval(irow1, irow1); 
	}
      }
    }

    private class TableViewSelectionListener implements ListSelectionListener {
      public void valueChanged(ListSelectionEvent e) {
	int irow1 = tableView.getSelectedRow();
	int irow2 = tableRowHead.getSelectedRow();
	if (irow1 != irow2 && irow1 >= 0) {
//	    tableRowHead.clearSelection(); 
	    tableRowHead.setRowSelectionInterval(irow1, irow1); 
	}
      }
    }

    private class ScrollingActionListener implements ActionListener  {
	public void actionPerformed (ActionEvent evt) {
	    if (tableDB == null) return;
	    String str = evt.getActionCommand();
	    JScrollBar bar = tableDB.getVerticalScrollBar();
	    if (str.equalsIgnoreCase("U")) {
		bar.setValue(bar.getMinimum());
	    }
	    else if (str.equalsIgnoreCase("D")) {
		bar.setValue(bar.getMaximum());
	    }
	}
    }

}

⌨️ 快捷键说明

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