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

📄 dbtable.java

📁 一个用java写的地震分析软件(无源码)-used to write a seismic analysis software (without source)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package org.trinet.util.graphics.table;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.util.Arrays;
import org.trinet.util.*;

public class DBTable {
    static final int DEFAULT_FONT_SIZE = 12;
    static final Font DEFAULT_TABLE_FONT = new Font("Monospaced", Font.PLAIN, DEFAULT_FONT_SIZE);
    Font font = DEFAULT_TABLE_FONT;

    static final int DEFAULT_BLOCK_ROWS = 9;

    public JTable  tableRowHead;
    public JTable  tableView;
    TableSorterAbs  sorter = new TableSorterAbs();
    public JDBCAdapter  tableModel;
    JScrollPane  tableDB;

    Color defaultBgColor = new Color(1.f, 1.f, 0.7f); // light yellow;
    Color keyBgColor = new Color (1.f, 0.8f, 0.35f); // orange;
    Color nonNullBgColor = Color.green;
    Color selectedBgColor = Color.yellow;

//    int [] displayedColumns;

// DBTable constructor
    public DBTable(JDBCAdapter tableModel) {
	initTableModel(tableModel);
    }

    public void setTableCellBackgroundColors(Color defaultColor, Color keyColor, Color nonNullColor, Color selectedColor) { 
	if (defaultColor != null) defaultBgColor = defaultColor;
	if (keyColor != null) keyBgColor = keyColor;
	if (nonNullColor != null) nonNullBgColor = nonNullColor;
	if (selectedColor != null) selectedBgColor = selectedColor;
    }

/*
    public void setDisplayColumnIndices(int [] order) {
	displayedColumns = order;
    }

    void setTableDisplayColumns(JTable dataTable, int [] orderIndex) {
	if (orderIndex == null) return;
	if (orderIndex.length == 0) return;
	int colCount = dataTable.getColumnCount();
	if (orderIndex.length > colCount) return;

	TableColumnModel tcm = dataTable.getColumnModel();
	TableColumnModel tcm2 = new DefaultTableColumnModel();
	TableColumn col;
	for (int i = 0; i<colCount; i++) {
		col = tcm.getColumn(orderIndex[i]));
		if (col != null) tcm2.addColumn(col);
	}
	dataTable.setColumnModel(tcm2); 
    }
*/

    public JScrollPane createTable(JDBCAdapter tableModel) {
	initTableModel(tableModel);
	return createTable();
    }

    public JScrollPane createTable() {
//	Debug.println("DBTable setting up JTable scrollpane ...");
	tableView = new JTable(sorter);
	setTableAppearance(tableView);
        setTableSelectionState(tableView);
//	Debug.println("DBTable setting up RowHeader cell renderers/editors...");
	setTableColumnRenderersEditors(tableView, defaultBgColor, nonNullBgColor, selectedBgColor);
	initTableColumnSizes(tableView);
//	setTableDisplayColumns(tableview, displayedColumns);

	tableRowHead = createRowHeaderTable(tableView);
	setTableAppearance(tableRowHead);
        setTableSelectionState(tableRowHead);
	setTableColumnRenderersEditors(tableRowHead, keyBgColor, keyBgColor, selectedBgColor);
	initTableColumnSizes(tableRowHead);

	addListeners();

	tableDB = createTableScrollPane();

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

    private JScrollPane createTableScrollPane() {
	tableRowHead.setPreferredScrollableViewportSize(tableRowHead.getPreferredSize());
	tableView.setPreferredScrollableViewportSize(tableView.getPreferredSize());
	JScrollPane scrollpane = null;
        if (tableView.getColumnCount() <= 0) {
	  System.out.println("DBTable: tableView has no non-key columns");
	  scrollpane = new JScrollPane(tableRowHead);
	}
        else scrollpane = new JScrollPane(tableView);

	scrollpane.setRowHeaderView(tableRowHead);
	scrollpane.setCorner(JScrollPane.UPPER_LEFT_CORNER, tableRowHead.getTableHeader());

	int incr = tableView.getRowHeight() + tableView.getRowMargin();
	scrollpane.getVerticalScrollBar().setUnitIncrement(incr);
	scrollpane.getVerticalScrollBar().setBlockIncrement(incr*DEFAULT_BLOCK_ROWS);

	JButton jbDown = new JButton();
	jbDown.setActionCommand("D");
	ScrollingActionListener scrollingActionListener = new ScrollingActionListener();
	jbDown.addActionListener(scrollingActionListener);
	scrollpane.setCorner(JScrollPane.LOWER_RIGHT_CORNER, jbDown);

	JButton jbUp = new JButton();
	jbUp.setActionCommand("U");
	jbUp.addActionListener(scrollingActionListener);
	scrollpane.setCorner(JScrollPane.UPPER_RIGHT_CORNER, jbUp);

	return scrollpane;
    }

    public void setScrollIncrements(int unit, int block) {
	if (tableDB == null) return;
	tableDB.getVerticalScrollBar().setUnitIncrement(unit);
	tableDB.getVerticalScrollBar().setBlockIncrement(block);
    }

    private JTable createRowHeaderTable(JTable dataTable) {	// Make second table for row header
//	Debug.println("DBTable setting up RowHeader JTable scrollpane ...");
	TableColumnModel tcm = dataTable.getColumnModel();
	TableColumnModel tcm2 = new DefaultTableColumnModel();
	int nkeyCols = 0;
	TableColumn col;
	int count = tableModel.getColumnCount();
	for (int i = 0; i < count; i++) {
	    if (tableModel.isColumnAKey(i)) {
		col = tcm.getColumn(tcm.getColumnIndex(tableModel.getColumnName(i)));
		tcm.removeColumn(col);
		tcm2.addColumn(col);
		nkeyCols++;
	    }
	}
	JTable rowHeaderTable = new JTable(sorter); 
	rowHeaderTable.setColumnModel(tcm2);
	return rowHeaderTable;
    }

    private void initTableModel(JDBCAdapter model) {
	this.tableModel = model;
	sorter.setModel(model);
    }

    public void setTableFont(JTable table, Font font) {
	if (font == null) font = DEFAULT_TABLE_FONT;
	table.getTableHeader().setFont(font);
	table.setFont(font);
    }

    private void setTableAppearance(JTable table) {
	table.setDoubleBuffered(true);
	table.setToolTipText(null); // "double-click edits data field only if SELECT FOR UPDATE query"
	table.setAutoResizeMode(tableView.AUTO_RESIZE_OFF );
	table.getTableHeader().setForeground(Color.red);
	table.getTableHeader().setBackground(new Color(.85f,.85f,.85f));
	table.getTableHeader().setToolTipText("double-click sorts ascending; shift-double-click sorts descending");
	table.setShowGrid(false);
	setTableFont(table, font);
    }

// setup rowheader selection/color attributes
    private void setTableSelectionState(JTable table) {
	table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
	table.setRowSelectionAllowed(true);
	table.setCellSelectionEnabled(false);
	table.setColumnSelectionAllowed(false);
    }

    public void clearSelection() {
	tableView.clearSelection();
	tableRowHead.clearSelection();
    }

// Setup format patterns and number renderers
    private void setTableColumnRenderersEditors(JTable table, Color defaultColor, Color nonNullColor, Color selectedColor) {
//	Debug.println("DBTable setting up MainTable cell renderers/editors...");
	String pattern0 = "#0";
	FormattedNumberEditor_FW numberEditor0 = new FormattedNumberEditor_FW(pattern0);
	EditorMouseListener editorListener = new EditorMouseListener();
	numberEditor0.getComponent().addMouseListener(editorListener);

	String pattern9 = "#0.000000"; // generic four byte float
	FormattedNumberRenderer numberRenderer9 = new FormattedNumberRenderer(pattern9);
	FormattedNumberEditor_FW numberEditor9 = new FormattedNumberEditor_FW(pattern9);
	numberEditor9.getComponent().addMouseListener(editorListener);

// Assign editor/renderers to table columns
	Font tableFont = table.getFont();
	FontMetrics fm = table.getFontMetrics(tableFont);

	GraphicTimestampTextCellRenderer timestampRenderer = 
		new GraphicTimestampTextCellRenderer(fm, defaultColor, selectedColor);
	GraphicTimestampTextCellRenderer timestampNonNullRenderer =
		 new GraphicTimestampTextCellRenderer(fm, nonNullColor, selectedColor);

	GraphicTextCellRenderer defaultRenderer = new GraphicTextCellRenderer(fm, defaultColor, selectedColor);
	GraphicTextCellRenderer defaultNonNullRenderer  = new GraphicTextCellRenderer(fm, nonNullColor, selectedColor);

	GraphicDateTimeTextCellRenderer datetimeRenderer = new GraphicDateTimeTextCellRenderer(fm, defaultColor, selectedColor);
	GraphicDateTimeTextCellRenderer datetimeNonNullRenderer  = new GraphicDateTimeTextCellRenderer(fm, nonNullColor, selectedColor);
	CalendarDateEditor cdEditor = new CalendarDateEditor(tableFont);
	cdEditor.getComponent().addMouseListener(editorListener);

	DateTimeEditor dtEditor = new DateTimeEditor(tableFont);
	dtEditor.getComponent().addMouseListener(editorListener);
	
	TextCellEditor textEditor = new TextCellEditor(tableFont);
	textEditor.getComponent().addMouseListener(editorListener);

	GraphicDateTimeTextCellRenderer dtRenderer = null;
	GraphicTimestampTextCellRenderer tsRenderer = null;
	GraphicTextCellRenderer renderer = null;

	TableColumnModel tcm = table.getColumnModel();
	for (int i = 0; i<table.getColumnCount(); i++) {
	  TableColumn column = tcm.getColumn(i);
	  int index = table.convertColumnIndexToModel(i);
	  if (tableModel.isColumnNullable(index)) {
		renderer   = defaultRenderer;
//		tsRenderer = timestampNonNullRenderer;
		tsRenderer = timestampRenderer;

⌨️ 快捷键说明

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