📄 defaultcellattribute.java
字号:
/* * (swing1.1beta3) * */package jp.gr.java_conf.tame.swing.table;import java.awt.*;/** * @version 1.0 11/22/98 */public class DefaultCellAttribute // implements CellAttribute ,CellSpan { implements CellAttribute ,CellSpan ,ColoredCell ,CellFont { // // !!!! CAUTION !!!!! // these values must be synchronized to Table data // protected int rowSize; protected int columnSize; protected int[][][] span; // CellSpan protected Color[][] foreground; // ColoredCell protected Color[][] background; // protected Font[][] font; // CellFont public DefaultCellAttribute() { this(1,1); } public DefaultCellAttribute(int numRows, int numColumns) { setSize(new Dimension(numColumns, numRows)); } protected void initValue() { for(int i=0; i<span.length;i++) { for(int j=0; j<span[i].length; j++) { span[i][j][CellSpan.COLUMN] = 1; span[i][j][CellSpan.ROW] = 1; } } } // // CellSpan // public int[] getSpan(int row, int column) { if (isOutOfBounds(row, column)) { int[] ret_code = {1,1}; return ret_code; } return span[row][column]; } public void setSpan(int[] span, int row, int column) { if (isOutOfBounds(row, column)) return; this.span[row][column] = span; } public boolean isVisible(int row, int column) { if (isOutOfBounds(row, column)) return false; if ((span[row][column][CellSpan.COLUMN] < 1) ||(span[row][column][CellSpan.ROW] < 1)) return false; return true; } public void combine(int[] rows, int[] columns) { if (isOutOfBounds(rows, columns)) return; int rowSpan = rows.length; int columnSpan = columns.length; int startRow = rows[0]; int startColumn = columns[0]; for (int i=0;i<rowSpan;i++) { for (int j=0;j<columnSpan;j++) { if ((span[startRow +i][startColumn +j][CellSpan.COLUMN] != 1) ||(span[startRow +i][startColumn +j][CellSpan.ROW] != 1)) { //System.out.println("can't combine"); return ; } } } for (int i=0,ii=0;i<rowSpan;i++,ii--) { for (int j=0,jj=0;j<columnSpan;j++,jj--) { span[startRow +i][startColumn +j][CellSpan.COLUMN] = jj; span[startRow +i][startColumn +j][CellSpan.ROW] = ii; //System.out.println("r " +ii +" c " +jj); } } span[startRow][startColumn][CellSpan.COLUMN] = columnSpan; span[startRow][startColumn][CellSpan.ROW] = rowSpan; } public void split(int row, int column) { if (isOutOfBounds(row, column)) return; int columnSpan = span[row][column][CellSpan.COLUMN]; int rowSpan = span[row][column][CellSpan.ROW]; for (int i=0;i<rowSpan;i++) { for (int j=0;j<columnSpan;j++) { span[row +i][column +j][CellSpan.COLUMN] = 1; span[row +i][column +j][CellSpan.ROW] = 1; } } } // // ColoredCell // public Color getForeground(int row, int column) { if (isOutOfBounds(row, column)) return null; return foreground[row][column]; } public void setForeground(Color color, int row, int column) { if (isOutOfBounds(row, column)) return; foreground[row][column] = color; } public void setForeground(Color color, int[] rows, int[] columns) { if (isOutOfBounds(rows, columns)) return; setValues(foreground, color, rows, columns); } public Color getBackground(int row, int column) { if (isOutOfBounds(row, column)) return null; return background[row][column]; } public void setBackground(Color color, int row, int column) { if (isOutOfBounds(row, column)) return; background[row][column] = color; } public void setBackground(Color color, int[] rows, int[] columns) { if (isOutOfBounds(rows, columns)) return; setValues(background, color, rows, columns); } // // // CellFont // public Font getFont(int row, int column) { if (isOutOfBounds(row, column)) return null; return font[row][column]; } public void setFont(Font font, int row, int column) { if (isOutOfBounds(row, column)) return; this.font[row][column] = font; } public void setFont(Font font, int[] rows, int[] columns) { if (isOutOfBounds(rows, columns)) return; setValues(this.font, font, rows, columns); } // // // CellAttribute // public void addColumn() { int[][][] oldSpan = span; int numRows = oldSpan.length; int numColumns = oldSpan[0].length; span = new int[numRows][numColumns + 1][2]; System.arraycopy(oldSpan,0,span,0,numRows); for (int i=0;i<numRows;i++) { span[i][numColumns][CellSpan.COLUMN] = 1; span[i][numColumns][CellSpan.ROW] = 1; } } public void addRow() { int[][][] oldSpan = span; int numRows = oldSpan.length; int numColumns = oldSpan[0].length; span = new int[numRows + 1][numColumns][2]; System.arraycopy(oldSpan,0,span,0,numRows); for (int i=0;i<numColumns;i++) { span[numRows][i][CellSpan.COLUMN] = 1; span[numRows][i][CellSpan.ROW] = 1; } } public void insertRow(int row) { int[][][] oldSpan = span; int numRows = oldSpan.length; int numColumns = oldSpan[0].length; span = new int[numRows + 1][numColumns][2]; if (0 < row) { System.arraycopy(oldSpan,0,span,0,row-1); } System.arraycopy(oldSpan,0,span,row,numRows - row); for (int i=0;i<numColumns;i++) { span[row][i][CellSpan.COLUMN] = 1; span[row][i][CellSpan.ROW] = 1; } } public Dimension getSize() { return new Dimension(rowSize, columnSize); } public void setSize(Dimension size) { columnSize = size.width; rowSize = size.height; span = new int[rowSize][columnSize][2]; // 2: COLUMN,ROW foreground = new Color[rowSize][columnSize]; background = new Color[rowSize][columnSize]; font = new Font[rowSize][columnSize]; initValue(); } /* public void changeAttribute(int row, int column, Object command) { } public void changeAttribute(int[] rows, int[] columns, Object command) { } */ protected boolean isOutOfBounds(int row, int column) { if ((row < 0)||(rowSize <= row) ||(column < 0)||(columnSize <= column)) { return true; } return false; } protected boolean isOutOfBounds(int[] rows, int[] columns) { for (int i=0;i<rows.length;i++) { if ((rows[i] < 0)||(rowSize <= rows[i])) return true; } for (int i=0;i<columns.length;i++) { if ((columns[i] < 0)||(columnSize <= columns[i])) return true; } return false; } protected void setValues(Object[][] target, Object value, int[] rows, int[] columns) { for (int i=0;i<rows.length;i++) { int row = rows[i]; for (int j=0;j<columns.length;j++) { int column = columns[j]; target[row][column] = value; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -