`

StyledCell在Table中

 
阅读更多

原文链接:http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/viewers/Snippet049StyledCellLabelProvider.java?view=markup

 

可以使用StyledString设置字符加粗、下划线等:

public class Snippet049StyledCellLabelProvider {
	private static final Display DISPLAY= Display.getDefault();
	public static void main(String[] args) {
		Shell shell= new Shell(DISPLAY);
		shell.setSize(400, 400);
		shell.setLayout(new FillLayout());

		Snippet049StyledCellLabelProvider example= new Snippet049StyledCellLabelProvider();
		example.createPartControl(shell);
		
		shell.open();
		while (!shell.isDisposed()) {
			if (!DISPLAY.readAndDispatch()) {
				DISPLAY.sleep();
			}
		}
		DISPLAY.dispose();
	}
	
	public Composite createPartControl(Composite parent) {
		Composite composite= new Composite(parent, SWT.NONE);
		composite.setLayout(new GridLayout(1, true));

		Label label= new Label(composite, SWT.NONE);
		label.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
		label.setText("Viewer with a StyledCellLabelProvider:"); //$NON-NLS-1$
		
		final TableViewer tableViewer= new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

		// Multi-font support only works in JFace 3.5 and above (specifically, 3.5 M4 and above).
		// With JFace 3.4, the font information (bold in this example) will be ignored.
		FontData[] boldFontData= getModifiedFontData(tableViewer.getTable().getFont().getFontData(), SWT.BOLD);

		Font boldFont = new Font(Display.getCurrent(), boldFontData);
		ExampleLabelProvider labelProvider= new ExampleLabelProvider(boldFont);
		FileSystemContentProvider contentProvider= new FileSystemContentProvider();
		
		tableViewer.setContentProvider(contentProvider);
		tableViewer.setLabelProvider(labelProvider);

		GridData data= new GridData(GridData.FILL, GridData.FILL, true, true);
		tableViewer.getControl().setLayoutData(data);
		tableViewer.setInput(new Object());

		return composite;
	}
	
	private static FontData[] getModifiedFontData(FontData[] originalData, int additionalStyle) {
		FontData[] styleData = new FontData[originalData.length];
		for (int i = 0; i < styleData.length; i++) {
			FontData base = originalData[i];
			styleData[i] = new FontData(base.getName(), base.getHeight(), base.getStyle() | additionalStyle);
		}
       	return styleData;
    }
	
	private static class ExampleLabelProvider extends StyledCellLabelProvider {
		private static int IMAGE_SIZE= 16;
		private static final Image IMAGE1= new Image(DISPLAY, DISPLAY.getSystemImage(SWT.ICON_WARNING).getImageData().scaledTo(IMAGE_SIZE, IMAGE_SIZE));
		private static final Image IMAGE2= new Image(DISPLAY, DISPLAY.getSystemImage(SWT.ICON_ERROR).getImageData().scaledTo(IMAGE_SIZE, IMAGE_SIZE));
		private final Styler fBoldStyler; 
		
		public ExampleLabelProvider(final Font boldFont) {
			fBoldStyler= new Styler() {
				public void applyStyles(TextStyle textStyle) {
					textStyle.font= boldFont;
				}
			};
		}
		
		public void update(ViewerCell cell) {
			Object element= cell.getElement();
			if (element instanceof File) {
				File file= (File) element;
				// Multi-font support only works in JFace 3.5 and above (specifically, 3.5 M4 and above).
				// With JFace 3.4, the font information (bold in this example) will be ignored.
				Styler style= file.isDirectory() ? fBoldStyler: null;
				StyledString styledString= new StyledString(file.getName(), style);
				String decoration = MessageFormat.format(" ({0} bytes)", new Object[] { new Long(file.length()) }); //$NON-NLS-1$
				styledString.append(decoration, StyledString.COUNTER_STYLER);
				
				cell.setText(styledString.toString());
				cell.setStyleRanges(styledString.getStyleRanges());
				
				if (file.isDirectory()) {
					cell.setImage(IMAGE1);
				} else {
					cell.setImage(IMAGE2);
				}
			} else {
				cell.setText("Unknown element"); //$NON-NLS-1$
			}

			super.update(cell);
		}
		
		protected void measure(Event event, Object element) {
			super.measure(event, element);
		}
	}

	private static class FileSystemContentProvider implements IStructuredContentProvider {
		public Object[] getElements(Object element) {
			File[] roots = File.listRoots();
			for (int i = 0; i < roots.length; i++) {
				File[] list = roots[i].listFiles();
				if (list != null && list.length > 0) {
					return list;
				}
			}
			return roots;
		}

		public void dispose() {}
		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
	}
}

 



 

 

  • 大小: 28.1 KB
分享到:
评论

相关推荐

    selenium + python 获取table数据的示例讲解

    根据table的id属性和table中的某一个元素定位其在table中的位置 table包括表头,位置坐标都是从1开始算 tableId:table的id属性 queryContent:需要确定位置的内容 def get_table_content(tableId,queryContent): ...

    uniapp-table中改版uni-table插件

    在 UniApp 中,`uni-table` 是一个用于展示数据表格的组件,它提供了基础的数据展示和操作功能。然而,随着项目需求的多样化,有时我们需要对原生组件进行扩展和定制以满足特定场景的需求。 标题"uniapp-table中...

    Bootstrap Table中文文档

    bootstrap table各个属性值的详细说明,中文翻译版本。

    将数据显示在TABLE控件中

    ### 将数据显示在TABLE控件中的关键技术点 #### 一、概述 在ASP.NET应用程序开发过程中,经常需要将从数据库中获取的数据展示给用户。本文将详细介绍如何利用ASP.NET 2005、C#语言及SQL Server数据库,将查询到的...

    在SAP中查询TABLE的18种方法

    在SAP系统中,查询Table数据是一项常见的任务,尤其对于开发人员和技术支持人员来说更是如此。本文将介绍18种查询Table的方法,并重点讲解其中较为常用的部分。通过这些方法,用户能够更有效地定位屏幕字段背后的...

    layui table中的列为checkbox 使layui中table表格中的列单元格显示为单选框checkbox

    然后,在layui的JS代码中,我们使用`layui.table.render()`方法来渲染表格。在列配置中,我们使用`type: 'checkbox'`来设置该列显示为复选框。完整的代码如下: ```javascript layui.use(['table'], function(){ ...

    vxe-table vue table 表格组件功能

    vxe-table是Vue.js中一款功能强大的表格组件,它为用户提供了丰富的表格操作功能,可以大大提高开发中的表格处理效率。vxe-table组件支持多种特性,包括但不限于基础展示、尺寸调整、样式定制、交互功能和数据处理等...

    xpTable,c# xptable NET中最强,最全功能的表格控件 ,可以定制一个ListView,能够在列中插入图像、下拉框、可上下调整的数字、进度条

    可以定制一个ListView,能够在列中插入图像、下拉框、可上下调整的数字、进度条等等。 [功能] 全定制可视化界面 支持XP风格 轻易添加再定制的控件 可隐藏列 行、列、单元可以被Disable 每个单元、列可以有Tooltip ...

    tableExport导出pdf 中文 乱码解决

    在`tableExport.jquery.plugin-master`这个压缩包中,可能包含了`tableExport`插件的源代码和其他相关资源。你可以通过查看和修改源代码,确保在导出PDF时正确处理中文字符。同时,查阅插件文档和相关示例,以获取更...

    table嵌套table边框样式

    在网页设计中,表格(Table)是用于组织数据的重要元素,而当表格嵌套时,如何设置合适的边框样式就显得尤为重要。`table嵌套table的边框样式`是一个常见的需求,尤其在处理复杂的数据展示时。本篇将详细介绍如何...

    layui的table中显示图片方法

    图片需要用到模板.templet: ... var table= layui.table; table.render({ elem:'#needstable' ,url:'{:url()}' ,method:'post' ,cellMinWidth:80 ,page:true ,cols:[[ {field:'needs_id',title:

    layui异步加载table表中某一列数据的例子

    在本篇文章中,介绍了如何利用layui框架实现异步加载table表中某一列数据的示例。layui是一个轻量级的前端UI框架,提供了一整套的解决方案,方便前端开发者快速构建界面。本文将重点阐述如何在layui框架下,利用异步...

    js获取table中当前选择行号

    通过js获取table中当前选择的一行的行号,获取当前行号后可以进行对应的操作

    在table中添加行实例

    在table中添加行实例document.getElementById("tbMain").appendChild(trElemnet)

    vxe-table-v2.9.24_表格组件_Table_

    **vxe-table-v2.9.24:Vue.js中的高效...通过这两个文件,开发者可以深入了解vxe-table的内部实现和如何在项目中集成使用。总体来说,vxe-table是一个功能全面、性能卓越的表格组件,能够满足大部分Web应用的表格需求。

    Bootstrap Table API 中文版(完整翻译文档)

    在`jQuery.fn.bootstrapTable.defaults`文件中,定义了所有表格的默认选项。 `data-toggle`通常默认为`table`,表明这是一个Bootstrap Table;`data-classes`默认为`table table-hover`,提供边框和悬停时的背景...

    将bootstrap-table表格翻译为中文

    Bootstrap-table 是基于Bootstrap框架的扩展插件,它允许开发者在网页中创建功能丰富的表格,包括排序、过滤、分页、行编辑等。在这个场景中,我们主要关注的是如何将Bootstrap-table的默认英文界面翻译为中文。 ...

    Layui组件Table绑定行点击事件和获取行数据的方法

    Layui的Table组件的使用是前端开发中非常基础且重要的技能,接下来详细解析如何在Layui的Table组件中实现行点击事件的绑定以及如何获取对应行的数据。 首先,要实现行点击事件的绑定,需要等待Table组件初始化完成...

    Bootstrap Table两个table间行数据拖拽

    在“Bootstrap Table两个Table数据之间行数据拖拽”的主题中,我们主要讨论的是如何实现用户可以通过拖放操作在两个Bootstrap表格之间移动行数据,这种功能在数据管理、比较或重新排序场景中非常实用。 首先,我们...

    jasperReports支持Table中文的解决

    中文支持的完美解决, 1、通过设置默认样式的方式不能解决table和subReport中的中文显示。 2、jasperreports-fonts-6.9.0.jar增加了【宋体】的支持。...3、在SpringMvc中测试导出PDF没有问题,包括Table和subReport。

Global site tag (gtag.js) - Google Analytics