亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tableview.java

?? java jdk 1.4的源碼
?? JAVA
?? 第 1 頁 / 共 4 頁
字號:
    public void replace(int offset, int length, View[] views) {	super.replace(offset, length, views);	invalidateGrid();    }    // --- ViewFactory methods ------------------------------------------    /**     * The table itself acts as a factory for the various      * views that actually represent pieces of the table.     * All other factory activity is delegated to the factory     * returned by the parent of the table.     */    public View create(Element elem) {	Object o = elem.getAttributes().getAttribute(StyleConstants.NameAttribute);	if (o instanceof HTML.Tag) {	    HTML.Tag kind = (HTML.Tag) o;	    if (kind == HTML.Tag.TR) {		return createTableRow(elem);	    } else if ((kind == HTML.Tag.TD) || (kind == HTML.Tag.TH)) {		return new CellView(elem);	    } else if (kind == HTML.Tag.CAPTION) {		return new javax.swing.text.html.ParagraphView(elem);	    }	}	// default is to delegate to the normal factory	View p = getParent();	if (p != null) {	    ViewFactory f = p.getViewFactory();	    if (f != null) {		return f.create(elem);	    }	}	return null;    }	    // ---- variables ----------------------------------------------------    private AttributeSet attr;    private StyleSheet.BoxPainter painter;    private int cellSpacing;    /**     * The index of the caption view if there is a caption.     * This has a value of -1 if there is no caption.  The     * caption lives in the inset area of the table, and is     * updated with each time the grid is recalculated.     */    private int captionIndex;    /**     * Do any of the table cells contain a relative size     * specification?  This is updated with each call to     * updateGrid().  If this is true, the ColumnIterator     * will do extra work to calculate relative cell      * specifications.     */    private boolean relativeCells;    /**     * Do any of the table cells span multiple rows?  If     * true, the RowRequirementIterator will do additional     * work to adjust the requirements of rows spanned by     * a single table cell.  This is updated with each call to     * updateGrid().     */    private boolean multiRowCells;    int[] columnSpans;    int[] columnOffsets;    /**     * SizeRequirements for all the columns.     */    SizeRequirements totalColumnRequirements;    SizeRequirements[] columnRequirements;    RowIterator rowIterator = new RowIterator();    ColumnIterator colIterator = new ColumnIterator();    Vector rows;    boolean gridValid;    static final private BitSet EMPTY = new BitSet();    class ColumnIterator implements CSS.LayoutIterator {	/**	 * Disable percentage adjustments which should only apply	 * when calculating layout, not requirements.	 */	void disablePercentages() {	    percentages = null;	}	/**	 * Update percentage adjustments if they are needed.	 */	private void updatePercentagesAndAdjustmentWeights(int span) {	    adjustmentWeights = new int[columnRequirements.length];	    for (int i = 0; i < columnRequirements.length; i++) {		adjustmentWeights[i] = 0;	    }	    if (relativeCells) {		percentages = new int[columnRequirements.length];	    } else {		percentages = null;	    }	    int nrows = getRowCount();	    for (int rowIndex = 0; rowIndex < nrows; rowIndex++) {		RowView row = getRow(rowIndex);		int col = 0;		int ncells = row.getViewCount();		for (int cell = 0; cell < ncells; cell++, col++) {		    View cv = row.getView(cell);		    for (; row.isFilled(col); col++); // advance to a free column		    int rowSpan = getRowsOccupied(cv);		    int colSpan = getColumnsOccupied(cv);		    AttributeSet a = cv.getAttributes();		    CSS.LengthValue lv = (CSS.LengthValue) 			a.getAttribute(CSS.Attribute.WIDTH);		    if ( lv != null ) {			int len = (int) (lv.getValue(span) / colSpan + 0.5f);			for (int i = 0; i < colSpan; i++) {			    if (lv.isPercentage()) {				// add a percentage requirement				percentages[col+i] = Math.max(percentages[col+i], len);			    }			    adjustmentWeights[col+i] = WorstAdjustmentWeight;			}		    }		    col += colSpan - 1;		}	    }	} 	/**	 * Set the layout arrays to use for holding layout results	 */	public void setLayoutArrays(int offsets[], int spans[], int targetSpan) {	    this.offsets = offsets;	    this.spans = spans;	    updatePercentagesAndAdjustmentWeights(targetSpan);	}	// --- RequirementIterator methods -------------------	public int getCount() {	    return columnRequirements.length;	}	public void setIndex(int i) {	    col = i;	}	public void setOffset(int offs) {	    offsets[col] = offs;	}	public int getOffset() {	    return offsets[col];	}	public void setSpan(int span) {	    spans[col] = span;	}	public int getSpan() {	    return spans[col];	}	public float getMinimumSpan(float parentSpan) {	    if ((percentages != null) && (percentages[col] != 0)) {		return Math.max(percentages[col], columnRequirements[col].minimum);	    }	    return columnRequirements[col].minimum;	}	public float getPreferredSpan(float parentSpan) {	    if ((percentages != null) && (percentages[col] != 0)) {		return Math.max(percentages[col], columnRequirements[col].preferred);	    }	    return columnRequirements[col].preferred;	}	public float getMaximumSpan(float parentSpan) {	    if ((percentages != null) && (percentages[col] != 0)) {		return Math.max(percentages[col], columnRequirements[col].preferred);	    }	    return columnRequirements[col].maximum;	}	public float getLeadingCollapseSpan() {	    return cellSpacing;	}	public float getTrailingCollapseSpan() {	    return cellSpacing;	}	public int getAdjustmentWeight() {	    return adjustmentWeights[col];	}	/**	 * Current column index	 */	private int col;	/**	 * percentage values (may be null since there	 * might not be any).	 */	private int[] percentages;	private int[] adjustmentWeights;	private int[] offsets;	private int[] spans;    }    class RowIterator implements CSS.LayoutIterator {	RowIterator() {	}	void updateAdjustments() {	    int axis = Y_AXIS;	    if (multiRowCells) {		// adjust requirements of multi-row cells		int n = getRowCount();		adjustments = new int[n];		for (int i = 0; i < n; i++) {		    RowView rv = getRow(i);		    if (rv.multiRowCells == true) {			int ncells = rv.getViewCount();			for (int j = 0; j < ncells; j++) {			    View v = rv.getView(j);			    int nrows = getRowsOccupied(v);			    if (nrows > 1) {				int spanNeeded = (int) v.getPreferredSpan(axis);				adjustMultiRowSpan(spanNeeded, nrows, i);			    }			}		    }		}	    } else {		adjustments = null;	    }	}	/**	 * Fixup preferences to accomodate a multi-row table cell	 * if not already covered by existing preferences.  This is	 * a no-op if not all of the rows needed (to do this check/fixup)	 * have arrived yet.	 */	void adjustMultiRowSpan(int spanNeeded, int nrows, int rowIndex) {	    if ((rowIndex + nrows) > getCount()) {		// rows are missing (could be a bad rowspan specification)		// or not all the rows have arrived.  Do the best we can with		// the current set of rows.		nrows = getCount() - rowIndex;		if (nrows < 1) {		    return;		}	    }	    int span = 0;	    for (int i = 0; i < nrows; i++) {		RowView rv = getRow(rowIndex + i);		span += rv.getPreferredSpan(Y_AXIS);	    }	    if (spanNeeded > span) {		int adjust = (spanNeeded - span);		int rowAdjust = adjust / nrows;		int firstAdjust = rowAdjust + (adjust - (rowAdjust * nrows));		RowView rv = getRow(rowIndex);                adjustments[rowIndex] = Math.max(adjustments[rowIndex],                                                 firstAdjust);		for (int i = 1; i < nrows; i++) {                    adjustments[rowIndex + i] = Math.max(                        adjustments[rowIndex + i], rowAdjust);		}	    }	}	void setLayoutArrays(int[] offsets, int[] spans) {	    this.offsets = offsets;	    this.spans = spans;	}	// --- RequirementIterator methods -------------------	public void setOffset(int offs) {	    RowView rv = getRow(row);	    if (rv != null) {		offsets[rv.viewIndex] = offs;	    }	}	public int getOffset() {	    RowView rv = getRow(row);	    if (rv != null) {		return offsets[rv.viewIndex];	    }	    return 0;	}	public void setSpan(int span) {	    RowView rv = getRow(row);	    if (rv != null) {		spans[rv.viewIndex] = span;	    }	}	public int getSpan() {	    RowView rv = getRow(row);	    if (rv != null) {		return spans[rv.viewIndex];	    }	    return 0;	}	public int getCount() {	    return rows.size();	}	public void setIndex(int i) {	    row = i;	}	public float getMinimumSpan(float parentSpan) {	    return getPreferredSpan(parentSpan);	}	public float getPreferredSpan(float parentSpan) {	    RowView rv = getRow(row);	    if (rv != null) {		int adjust = (adjustments != null) ? adjustments[row] : 0;		adjust += 2 * cellSpacing;		return rv.getPreferredSpan(TableView.this.getAxis()) + adjust;	    }	    return 0;	}	public float getMaximumSpan(float parentSpan) {	    return getPreferredSpan(parentSpan);	}	public float getLeadingCollapseSpan() {	    return cellSpacing;	}	public float getTrailingCollapseSpan() {	    return cellSpacing;	}	public int getAdjustmentWeight() {	    return 0;	}	/**	 * Current row index	 */	private int row;	/**	 * Adjustments to the row requirements to handle multi-row	 * table cells.  	 */	private int[] adjustments;	private int[] offsets;	private int[] spans;    }    /**     * View of a row in a row-centric table.     */    public class RowView extends BoxView {	/**	 * Constructs a TableView for the given element.	 *	 * @param elem the element that this view is responsible for	 */        public RowView(Element elem) {	    super(elem, View.X_AXIS);	    fillColumns = new BitSet();	    RowView.this.setPropertiesFromAttributes();	}	void clearFilledColumns() {	    fillColumns.and(EMPTY);	}	void fillColumn(int col) {	    fillColumns.set(col);	}	boolean isFilled(int col) {	    return fillColumns.get(col);	}	/**	 * The number of columns present in this row.	 */	int getColumnCount() {	    int nfill = 0;	    int n = fillColumns.size();	    for (int i = 0; i < n; i++) {		if (fillColumns.get(i)) {		    nfill ++;		}	    }	    return getViewCount() + nfill;	}	/**	 * Fetches the attributes to use when rendering.  This is	 * implemented to multiplex the attributes specified in the	 * model with a StyleSheet.	 */        public AttributeSet getAttributes() {	    return attr;	}	View findViewAtPoint(int x, int y, Rectangle alloc) {	    int n = getViewCount();	    for (int i = 0; i < n; i++) {		if (getChildAllocation(i, alloc).contains(x, y)) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级理论片| 一区二区久久久| 一本色道综合亚洲| 日韩 欧美一区二区三区| 综合电影一区二区三区| 欧美大尺度电影在线| 在线亚洲免费视频| 丁香婷婷综合五月| 看片的网站亚洲| 亚洲一二三四区不卡| 国产精品污网站| 精品欧美一区二区三区精品久久 | 中文字幕日本乱码精品影院| 精品少妇一区二区三区免费观看 | 久久久精品天堂| 91精品国产一区二区三区香蕉| 99在线精品视频| 欧美日韩精品一区二区三区蜜桃| 国产v综合v亚洲欧| 韩国三级中文字幕hd久久精品| 天堂在线亚洲视频| 亚洲图片有声小说| 亚洲美女偷拍久久| 国产精品伦理一区二区| 久久精品亚洲国产奇米99| 日韩一区二区在线观看| 8x福利精品第一导航| 欧美三级视频在线| 91福利视频网站| 91老师国产黑色丝袜在线| 成人av资源在线观看| 国产精品亚洲人在线观看| 久久精品国产亚洲aⅴ| 美女尤物国产一区| 美女一区二区在线观看| 久久99久久99| 美腿丝袜亚洲色图| 另类中文字幕网| 久久精品999| 国产老女人精品毛片久久| 国产剧情一区二区| 国产成人免费在线| 国产91精品久久久久久久网曝门 | 亚洲天天做日日做天天谢日日欢| 国产人妖乱国产精品人妖| 久久久久国产精品厨房| 中文字幕不卡三区| 亚洲欧洲日产国产综合网| 亚洲免费高清视频在线| 亚洲成人在线网站| 蜜桃传媒麻豆第一区在线观看| 日韩精品乱码免费| 精品在线免费视频| 成人午夜碰碰视频| 91麻豆高清视频| 欧美日韩一区二区三区四区五区 | 久久综合丝袜日本网| 国产欧美日韩视频一区二区 | 亚洲国产一区在线观看| 天天亚洲美女在线视频| 麻豆精品精品国产自在97香蕉| 国产综合久久久久久久久久久久| 国产精品911| 99精品国产热久久91蜜凸| 欧美性xxxxx极品少妇| 欧美精品一卡两卡| 精品福利一区二区三区免费视频| 国产午夜精品久久久久久免费视| 国产精品精品国产色婷婷| 亚洲综合激情小说| 久久99精品国产麻豆婷婷| 成人免费黄色在线| 欧美日韩久久一区二区| 日本一不卡视频| 国产成人综合在线观看| 在线亚洲人成电影网站色www| 欧美一级高清片在线观看| 国产日韩欧美不卡在线| 亚洲一区二区三区视频在线| 久久精品国产精品亚洲综合| caoporn国产精品| 91精品国产高清一区二区三区蜜臀| 久久久久国产精品厨房| 亚洲综合一二三区| 国产一区二区三区不卡在线观看 | 欧美一区二区精品在线| 国产精品无圣光一区二区| 五月天网站亚洲| 不卡一区中文字幕| 欧美大片日本大片免费观看| 一区二区三区在线免费播放| 国产精一区二区三区| 777久久久精品| 亚洲欧洲成人av每日更新| 美女视频黄久久| 91久久香蕉国产日韩欧美9色| 精品少妇一区二区三区日产乱码 | 日韩成人av影视| 97久久久精品综合88久久| 日韩精品资源二区在线| 一区二区三区日韩精品视频| 国产成人av影院| 日韩精品中文字幕一区| 亚洲一区二区三区视频在线 | 日韩欧美一级片| 亚洲成人黄色小说| 91视频国产资源| 欧美国产激情一区二区三区蜜月| 蜜臀av在线播放一区二区三区| 色综合久久久久久久| 国产婷婷精品av在线| 久久国产麻豆精品| 69堂成人精品免费视频| 亚洲精品乱码久久久久久久久| 国产激情一区二区三区桃花岛亚洲 | 国产精品资源网站| 欧美成人高清电影在线| 日本在线不卡视频一二三区| 欧美在线三级电影| 亚洲三级在线免费| av电影天堂一区二区在线观看| 久久久亚洲欧洲日产国码αv| 美女网站一区二区| 日韩亚洲欧美在线观看| 午夜影视日本亚洲欧洲精品| 91久久一区二区| 亚洲激情在线播放| 91日韩精品一区| 亚洲欧洲性图库| 91欧美激情一区二区三区成人| 国产精品久久久久三级| 粉嫩av一区二区三区粉嫩| 国产欧美精品一区二区色综合朱莉| 久久疯狂做爰流白浆xx| 日韩欧美国产精品| 美女网站色91| 久久亚洲春色中文字幕久久久| 韩国理伦片一区二区三区在线播放| 日韩三级免费观看| 奇米一区二区三区av| 欧美成人激情免费网| 国产精品自在欧美一区| 欧美国产丝袜视频| 91网上在线视频| 成人蜜臀av电影| 1000精品久久久久久久久| 99精品视频在线播放观看| 亚洲精品v日韩精品| 欧美年轻男男videosbes| 美女诱惑一区二区| 久久综合九色综合97_久久久| 国产成人综合在线| 中文字幕av不卡| 色婷婷av一区二区三区软件| 亚洲国产精品久久一线不卡| 日韩一级免费一区| 国产精品一二三四区| 亚洲天堂av老司机| 欧美电影在线免费观看| 国产精品综合在线视频| 亚洲精品乱码久久久久久久久| 制服丝袜在线91| 国产美女av一区二区三区| 亚洲欧美日韩国产另类专区 | 久久亚洲精精品中文字幕早川悠里 | 蜜臀av国产精品久久久久 | 久久婷婷国产综合国色天香| 丁香婷婷综合五月| 亚洲成av人片在线观看无码| 日韩精品一区二区三区老鸭窝| 国产精品一品视频| 亚洲美女视频一区| 精品区一区二区| 99久久精品国产观看| 五月天久久比比资源色| 欧美韩日一区二区三区四区| 欧美色大人视频| 国产一区二区在线电影| 亚洲精品国产一区二区三区四区在线| 欧美日产在线观看| 成人精品国产福利| 日本亚洲三级在线| 最新久久zyz资源站| 日韩欧美在线1卡| 色香蕉成人二区免费| 久久99精品国产.久久久久久 | 亚洲欧美日韩电影| 欧美va亚洲va国产综合| 一本一道波多野结衣一区二区| 九九**精品视频免费播放| 亚洲卡通欧美制服中文| 久久综合九色综合欧美亚洲| 欧美视频在线一区二区三区 | 久久超碰97中文字幕| 亚洲免费伊人电影| 国产欧美日韩在线看| 欧美大尺度电影在线| 欧美欧美午夜aⅴ在线观看| 9久草视频在线视频精品| 国产一区二区三区四|