TableViewer?¤È¤Ï †TableViewer?¤È¤Ï¡¢JFace¤Î¥ì¥¤¥ä¤¬Ä󶡤¹¤ë¥Ó¥å¡¼¥ï¥¯¥é¥¹¤Ç¤¹¡£¤¤¤ï¤æ¤ëɽ·Á¼°¤Î¥Ç¡¼¥¿¤òɽ¼¨¤¹¤ë¤¿¤á¤Î¥¦¥£¥¸¥§¥Ã¥È¤Ç¤¹¡£SWT¤ÎTable¥¯¥é¥¹¤Î¥é¥Ã¥Ñ¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¥Ç¡¼¥¿¤òɽ¼¨¤¹¤ëµ¡Ç½¤äDrag&Drop¤ä¥½¡¼¥Èµ¡¹½¤Ê¤É¡¢¤¤¤í¤¤¤íÊØÍø¤Êµ¡Ç½¤òÄ󶡤·¤Æ¤¯¤ì¤Þ¤¹¡£ ViewPart?¤ËÇÛÃÖ¤¹¤ë †¥Ó¥å¡¼¤ËÇÛÃÖ¤¹¤ë¤Ë¤Ï¡¢Viewpart¤ÎcreatePartControl?(Compsite parent)Æâ¤Ç Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout());
viewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.BORDER
| SWT.H_SCROLL | SWT.V_SCROLL);
¤È¤¹¤ë¤À¤±¤Ç¤¹¡£ ¥«¥é¥à¤òÀßÄꤹ¤ë †¼¡¤ËTableViewer?¤Ë¥«¥é¥à(Îó)¤òÄêµÁ¤·¤Æ¤¤¤¤Þ¤¹¡£´ðËÜŪ¤ËTableViewer?¤«¤éSWT¤ÎTable¥¯¥é¥¹¤ò¼èÆÀ¤·¤Æ table = viewer.getTable(); TableColumn tc1 = new TableColumn(table, SWT.NONE, 0); TableColumn tc2 = new TableColumn(table, SWT.NONE, 1); ¤È¤·¤Æ¤¤¤±¤Ð¤è¤¤¤Î¤Ç¤¹¤¬¡¢Eclipse¤ÎTaskView¤Î¥½¡¼¥¹¤ËÈó¾ï¤ËÈÆÍÑŪ¤Ê¥³¡¼¥Ç¥£¥ó¥°¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢¤½¤ì¤Ë±è¤Ã¤Æ¤ä¤Ã¤Æ¤ß¤¿¤¤¤È»×¤¤¤Þ¤¹¡£ ViewPart?¤Î¥Õ¥£¡¼¥ë¥É¤ËÄêµÁ private final ColumnPixelData[] DEFAULT_COLUMN_LAYOUTS = {
new ColumnPixelData(200), new ColumnPixelData(200),
new ColumnPixelData(200) };
private final IField[] VISIBLE_FIELDS = { new TitleField(),
new SummaryField(), new URLField() };
ColumnPixelData?¤Ï¤½¤Î¥«¥é¥à¤¬¥ê¥µ¥¤¥º²Äǽ¤«¤È¤«¡¢Â礤µ¤Ï¤¤¤¯¤Ä¤«¤Ê¤É¤Î¾ðÊó¤ò»ØÄꤷ¤Þ¤¹¡£¤Á¤Ê¤ß¤ËColumnPixelData¤ÎJavaDoc¤ò²¼¤ËºÜ¤»¤È¤¤Þ¤·¤¿¡£ IField¤Ï¥Ø¥Ã¥À̾¤ä¥Ø¥Ã¥À¤Ëɽ¼¨¤¹¤ë¥¢¥¤¥³¥ó¤Î¾ðÊ󡢤ޤ¿¥Ó¥å¡¼¥ï¤Î³Æ¥«¥é¥à¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤¬ÅϤµ¤ì¤¿¤È¤¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤òʸ»úÎó¤ËÊÑ´¹¤¹¤ëÊÑ´¹½èÍý¡¢¤Ê¤É¤òÈ÷¤¨¤¿(¼«ºî¤Î*1)¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¹¡£¸å¤Ë½Ð¤Æ¤¯¤ë¤Î¤Ç¾ÜºÙ¤Ï³ä°¦¤·¤Þ¤¹¡£¡£ public interface IField {
String getColumnHeaderText();
Image getColumnHeaderImage();
String getValue(Object obj);
Image getImage(Object obj);
}
¤³¤ì¤ò³Æ¥«¥é¥à¤Ë±è¤Ã¤¿·Á¤ÇOverride¤¹¤ì¤ÐOK¤Ç¤¹¡£ ¼¡¤Ë ViewPart?#createPartControl?¤Ç°Ê²¼¤ÎinitTalbe¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ private void initTable(Viewer viewer){
Table table = viewer.getTable();
TableLayout layout = new TableLayout();
table.setLayout(layout);
table.setHeaderVisible(true); // ¥Ø¥Ã¥À¤Ïɽ¼¨¤¹¤ë
table.setLinesVisible(true); // ¥é¥¤¥ó¤Ïɽ¼¨¤¹¤ë
ColumnLayoutData[] columnLayouts = getColumnLayouts();
for (int i = 0; i < columnLayouts.length; i++) {
layout.addColumnData(columnLayouts[i]);
TableColumn tc = new TableColumn(table, SWT.NONE, i);
tc.setText(VISIBLE_FIELDS[i].getColumnHeaderText());
tc.setImage(VISIBLE_FIELDS[i].getColumnHeaderImage());
}
}
private ColumnLayoutData[] getColumnLayouts() {
ColumnPixelData[] result = new ColumnPixelData[DEFAULT_COLUMN_LAYOUTS.length];
for (int i = 0; i < DEFAULT_COLUMN_LAYOUTS.length; i++) {
int width = DEFAULT_COLUMN_LAYOUTS[i].width;
//////////// ¢¨ /////////////////
result[i] = new ColumnPixelData(width);
}
return result;
}
¤³¤ì¤ÇTable¤ËTableColumn?¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤·¤¿¡£getColumnLayouts?¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢¤Ê¤«¤Ç¿·¤·¤¤ColumnPixelData?¤òºîÀ®¤·¤Æ¡¢¤ó¤ÇÇÛÎóColumnPixelData?[]¤òÊÖ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Î¤Þ¤Þ¤À¤È¥Õ¥£¡¼¥ë¥É¤ÈƱ¤¸¥â¥Î¤¬ÊÖ¤ë¤Î¤Ç¤ï¤±¤ï¤«¤ó¤Ê¤¤¤Î¤Ç¤¹¤¬¡¢¼Â¤Ï¢¨¤Î¤È¤³¤í¤Ë½èÍý¤¬¤¢¤ê¤Þ¤¹¡£¤¤¤Þ¤ó¤È¤³¤í¤Ï¡¢¤¢¤Þ¤êµ¤¤Ë¤»¤º¤Ë¤¤¤¤Þ¤·¤ç¤¦¡£¸å½Ò¤·¤Þ¤¹¡£ ¥É¥á¥¤¥ó¥ª¥Ö¥¸¥§¥¯¥È¤È2¤Ä¤ÎProvider †¤³¤³¤Þ¤Ç¤Ç¥«¥é¥à¤¬3¤Ä¤¢¤ëTableViewer?¤¬¹½ÃÛ¤µ¤ì¤Þ¤·¤¿¡£¤µ¤Æ¤³¤Î¥Æ¡¼¥Ö¥ë¤ËÃͤòɽ¼¨¤µ¤»¤Æ¤¤¤¯¤Î¤Ç¤¹¤¬¡¢JFace¥ì¥¤¥ä¤ÎTableViewer?¤Ç¤Ï
¤È¤¤¤¦3¼ïÎà¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬½ÅÍפǤ¹¡£ ¤¿¤È¤¨¤Ð¡¢¥É¥á¥¤¥ó¥ª¥Ö¥¸¥§¥¯¥È¤ò public intarface Model{
getSummary();
getURL();
getTitle();
}
¤È¤·¤Þ¤¹¡£¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¿¤È¤¨¤Ð10¸Ä(¤¿¤È¤¨¤ÐÇÛÎómodels)¤¢¤Ã¤¿¤È¤¤Ë¡¢¤½¤ì¤òTableViewer?¤Ç°ì¹Ô¤Ë°ì¥ª¥Ö¥¸¥§¥¯¥Èɽ¼¨¤·¤¿¤¤¤È¤¤Ï¡¢Ä¾ÀÜTableViewer?#setInput(models);¤È¤·¤Æ¤·¤Þ¤¨¤ÐOK¤Ç¤¹¡£¸å¤ÏÆó¤Ä¤Î¥×¥í¥Ð¥¤¥À¤¬²¿¤È¤«¤·¤Æ¤¯¤ì¤Þ¤¹¡£ ContentProvider?¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢¼Â¤Ï¥É¥á¥¤¥ó¥ª¥Ö¥¸¥§¥¯¥È¤¬ÇÛÎó¤äList¤Î¾ì¹ç¤Ë´Ø¤·¤Æ¤Ï¡¢JFace¤ÇArrayContentProvider?¤È¤¤¤¦¥×¥í¥Ð¥¤¥À¤òÄ󶡤·¤Æ¤¯¤ì¤Æ¤¤¤Þ¤¹¡£¤è¤Ã¤ÆcreatePartControl?¤Ç viewer.setContentProvider(new ArrayContentProvider()); ¤Ç½ª¤ï¤ê¤Ç¤¹¡£¤³¤ì¤Ç³Æ¹Ô¤Ë°ì¤Ä¤ÎModel¥ª¥Ö¥¸¥§¥¯¥È¤ò³ä¤êÅö¤Æ¤Æ¤¯¤ì¤Þ¤¹¡£ ¤Ä¤®¤ËLabelProvider?¤Ç¤¹¡£LabelProvider?¤ÏContentProvider?¤¬³Æ¹Ô¤Ë³ä¤êÅö¤Æ¤Æ¤¯¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È(Model¤Ç¤·¤¿)¤ò¡¢³Æ¥«¥é¥à¤Ë¤Ê¤ó¤Èɽ¼¨¤¹¤ë¤«»ØÄꤷ¤Þ¤¹¡£ °Ê²¼¤Î¤è¤¦¤ËÄêµÁ¤·¤Þ¤·¤¿¡£ class ViewLabelProvider extends LabelProvider implements
ITableLabelProvider {
private final IField[] fields;
public ViewLabelProvider(IField[] fields) {
this.fields = fields;
}¢¬ViewPart¤ËÄêµÁ¤·¤¿IField¤Ç¤¹
public String getColumnText(Object obj, int index) {
if (obj instanceof Model) { ¢¬index¤Ïº¸¤«¤é²¿ÈÖÌܤΥ«¥é¥à¤«
¢¬ ContentProvider¤¬ÇÛÎ󤫤é¼è¤ê½Ð¤·¤ÆÅϤ·¤Æ¤¯¤ì¤ë
Modelelement = (Model) obj;
return fields[index].getValue(element);
}
return "";
}
public Image getColumnImage(Object element, int columnIndex) {
return null; <-¥¤¥á¡¼¥¸¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ë¤Ï²¿¤«¤òÊÖ¤¹
}
}
¤³¤Î¥¯¥é¥¹¤òºî¤Ã¤Æ¤ª¤¤¤Æ¡¢ viewer.setLabelProvider(new ViewLabelProvider(VISIBLE_FIELDS)); ¤È¤·¤Æ¤ª¤±¤ÐOK¤Ç¤¹¡£ IField¤Î¸úǽ¤Ë¤Ä¤¤¤Æ¤Ç¤¹¤¬¡¢¤³¤Î¤è¤¦¤Ê¥¯¥é¥¹¤¬¤Ê¤¤¤ÈLabelProvider?¤ÎÃæ¤Ç¡¢°ìÎóÌܤÀ¤Ã¤¿¤émodel#getTitle,ÆóÎóÌܤÀ¤Ã¤¿¤émodel#getSummary¤Ê¤É¤Èswitch¤¬½Ð¤Æ¤¤½¤¦¤Ç¤¹¤¬¡¢¤½¤ì¤ò¥Ý¥ê¥â¥Õ¥£¥º¥à¤Ç²¿¤È¤«¤·¤Æ¤ë¤ï¤±¤Ç¤¹¡£ ¤Þ¤È¤á¤ë¤È
¤ÇTableViewer?¤ò¹½ÃÛ
¤È¤¤¤¦´¶¤¸¤Ç¤¹¤Í¡£ »²¹Í IMemmento¤ò»È¤Ã¤¿¡¢¥«¥é¥àÉý¤òÊݸ¤·¤Æ¥ê¥¹¥È¥¢¤¹¤ë †org.eclipse.ui.IViewPart¤Î ÀßÄê¤ÎÊݸ¤È¥ê¥¹¥È¥¢ ¤Ë¤Þ¤È¤á¤¿¤Î¤Ç¤¹¤¬¡¢IMemento¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÍѤ¤¤ë¤³¤È¤Ç¡¢¥Ó¥å¡¼¤òÊĤ¸¤¿¤È¤¤Î³Æ¥«¥é¥à¤Î¥«¥é¥àÉý¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¡¢¼¡²ó¤½¤Î¥Ó¥å¡¼¤ò³«¤¯¤È¤¤Ë¡¢ÊĤ¸¤¿¤È¤¤Î¥«¥é¥àÉý¤òºÆ¸½¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹*2¡£ ¤ä¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£Eclipse¤Ë¤Ï¤¢¤é¤«¤¸¤áView¤ò³«¤¤¤¿¤È¤¤Ë¸Æ¤Ð¤ì¤ë public void init(IViewSite site, IMemento memento); ¤È¤¤¤¦¥á¥½¥Ã¥É¤¬¤¢¤ë¤Î¤Ç¡¢¤½¤ì¤ò°Ê²¼¤Î¤è¤¦¤Ë¼ÂÁõ¤·¤Æ¤ª¤¤Þ¤¹¡£ public void init(IViewSite site, IMemento memento) throws PartInitException {
this.memento = memento;
super.init(site, memento);
}
View¤¬³«¤¯¤È¤¤ËÅϤµ¤ì¤Æ¤¤¿°ú¿ô¤Îmemento¤Ï¥Õ¥£¡¼¥ë¥É¤Ë»ý¤Ã¤Æ¤ª¤¤Þ¤¹¡£ µÕ¤Ë¡¢¥Ó¥å¡¼¤òÊĤ¸¤ë¤È¤¤Ë¤Ï public void saveState(IMemento memento); ¤¬¸Æ¤Ð¤ì¤ë¤Î¤Ç¡¢¤½¤Î¥á¥½¥Ã¥É¤ò°Ê²¼¤Î¤è¤¦¤Ë¼ÂÁõ¤·¤Æ¤ª¤¤Þ¤¹¡£ public void saveState(IMemento memento) {
super.saveState(memento);
saveColumnWidth(memento);
}
¤³¤Î¥á¥½¥Ã¥É¤Î°ú¿ô¤Îmemento¤Ï¡¢¼¡¤Ë¤³¤ÎView¤ò³«¤¤¤¿¤È¤¤Ëinit¤ÇÅϤµ¤ì¤Æ¤¯¤ëmemento¤Ê¤Î¤Ç¡¢¤³¤Îmemento¤Î¤Ê¤«¤Ë¼¡²óºÆ¸½¤·¤¿¤¤¾ðÊó¤ò¥»¥Ã¥È¤·¤Æ¤ª¤±¤Ð¤è¤¤¤È¸À¤¦¤ï¤±¤Ç¤¹¡£¾å¤Ç¤Ï¡¢savaColumnWidth?¤Æ¥á¥½¥Ã¥É¤ÎÃæ¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¼ÂÁõ¤·¤Æ¤ª¤¤Þ¤¹¡£ private void saveColumnWidth(IMemento memento) {
TableColumn[] columns = viewer.getTable().getColumns();
for (int i = 0; i < columns.length; i++) {
memento.putInteger(TAG_COLUMN_WIDTH + i, columns[i].getWidth());
} ¢¬Å¬Åö¤Êʸ»úÎó ¢¬¸½ºß¤Î¥«¥é¥àÉý
}
¸½ºß¤Î³Æ¥«¥é¥àÉý¤ò¡ÖTAG_COLUMN_WIDTH + i¡×¤È¤¤¤¦¥¡¼ÃͤÇmemento¤Ë¥»¥Ã¥È¤·¤Æ¤¤¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥¡¼Ãͤò»È¤Ã¤Æ¡¢¼¡²ó¥Ó¥å¡¼¤ò³«¤¤¤¿¤È¤¤Ï¥¡¼ÃͤǼè¤ê½Ð¤µ¤ì¤ë(Á°²ó¤Î)¥«¥é¥àÉý¤òTable¤Ë¥»¥Ã¥È¤·¤Æ¤¤¤¤Þ¤¹¡£ ¤µ¤Æ¡¢Àè¤Û¤É¸å½Ò¤¹¤ë¤«¤é¤È¤ê¤¢¤¨¤º¾Ã¤·¤Æ¤ª¤¯¡¢¤È¤¤¤Ã¤Æ¤¤¤¿¡¢ private ColumnLayoutData[] getColumnLayouts() {
ColumnPixelData[] result = new ColumnPixelData[DEFAULT_COLUMN_LAYOUTS.length];
for (int i = 0; i < DEFAULT_COLUMN_LAYOUTS.length; i++) {
int width = DEFAULT_COLUMN_LAYOUTS[i].width;
//////////// ¢¨ /////////////////
result[i] = new ColumnPixelData(width);
}
return result;
}
¤Ë½¤Àµ¤ò¤«¤±¤Æ¤¤¤¤Þ¤¹¡£¤³¤ì¤Ï¡¢¥«¥é¥àÉý¤òÊÝ»ý¤·¤¿¥¯¥é¥¹¡¢ColumnLayoutData?¤ò¼èÆÀ¤¹¤ë¥á¥½¥Ã¥É¤Ç¤¹¤¬¡¢¤³¤ì¤ò¡¢¥Õ¥£¡¼¥ë¥É¤Îmemento¤«¤éÃͤ¬¤È¤ì¤ë¾ì¹ç¤Ï¤½¤Ã¤Á¤ò»ÈÍѤ¹¤ë¡¢¤È¤¤¤¦½èÍý¤òÄɲ䷤Ƥ¤¤¤Þ¤¹¡£¢¨¤Î²Õ½ê¤ò°Ê²¼¤Î¤è¤¦¤ËÊѹ¹¤·¤Þ¤¹¡£ private ColumnLayoutData[] getColumnLayouts(ColumnPixelData[] data) {
ColumnPixelData[] result = new ColumnPixelData[data.length];
for (int i = 0; i < data.length; i++) {
int width = data[i].width;
if (memento != null) {
// ¥á¥á¥ó¥È¤«¤é¡¢Á°²ó¤ÎÉý¤ò¼èÆÀ¤·¤Æ¤¤¤ë
Integer widthInt = memento.getInteger(TAG_COLUMN_WIDTH + i);
if (widthInt != null && widthInt.intValue() > 0) {
width = widthInt.intValue();
}
}
result[i] = new ColumnPixelData(width);
}
return result;
}
¤³¤ì¤Ç¡¢¤¢¤é¤«¤¸¤á¡¢½é²ó¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥«¥é¥àÉý¤Ï¥Õ¥£¡¼¥ë¥É¤ËÄêµÁ¤·¤Æ¤ª¤¤¤¿¤±¤É¡¢¥æ¡¼¥¶¤¬»ÈÍѤ·¤Æmemento¤Ë¥«¥é¥àÉý¤¬Êݸ¤µ¤ì¤Æ¤¤¤ë¤È¤¤Ë¤Ï¡¢¤½¤Ã¤Á¤Î¥«¥é¥àÉý¤ò»ÈÍѤ¹¤ë¤è¤È¤¤¤¦¥³¡¼¥Ç¥£¥ó¥°¤¬¤Ç¤¤¢¤¬¤ê¤Þ¤·¤¿¡£ ¥½¡¼¥È½èÍý †Êݸ½èÍý †DnD †TIP½¸ †¤É¤Î¥«¥é¥à¤ò¥¯¥ê¥Ã¥¯¤·¤Æ¤â¤½¤Î¹Ô¤òÁªÂò¾õÂ֤ˤ¹¤ë †viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL|SWT.FULL_SELECTION);
SWT.FULL_SELECTION ¤¬¥Ý¥¤¥ó¥È¤Ç¤¹*3¡£ ¥×¥í¥Ñ¥Æ¥£ÃͤòÀßÄꤹ¤ë¡£ †String[] properties = new String[] { "text", "check", "color", "combo" };
// ¥«¥é¥à¡¦¥×¥í¥Ñ¥Æ¥£¤ÎÀßÄê
viewer.setColumnProperties(properties);
¤Ï ICellModifier#getValue(Object element, String property) ¤ÎpropertyÃͤˤʤê¤Þ¤¹¡£ ICellModifier?¤Ê¤É¤Ë¤Ä¤¤¤Æ¤ÏÊÔ½¸µ¡Ç½ÉÕ¤¥Æ¡¼¥Ö¥ë¤È¤Ï¤ò¤´»²¾È¤¯¤À¤µ¤¤¡£ »²¹Í1 ColumnPixelData?¤ÎJavaDoc?¥³¥á¥ó¥È †/**
* Creates a resizable column width of the given number of pixels.
*
* @param widthInPixels the width of column in pixels
*/
public ColumnPixelData(int widthInPixels) {
this(widthInPixels, true, false);
}
/**
* Creates a column width of the given number of pixels.
*
* @param widthInPixels the width of column in pixels
* @param resizable <code>true</code> if the column is resizable,
* and <code>false</code> if size of the column is fixed
*/
public ColumnPixelData(int widthInPixels, boolean resizable) {
this(widthInPixels, resizable, false);
}
/**
* Creates a column width of the given number of pixels.
*
* @param widthInPixels
* the width of column in pixels
* @param resizable
* <code>true</code> if the column is resizable, and
* <code>false</code> if size of the column is fixed
* @param addTrim
* <code>true</code> to allocate extra width to the column to
* account for trim taken by the column itself,
* <code>false</code> to use the given width exactly
* @since 3.1
*/
public ColumnPixelData(int widthInPixels, boolean resizable, boolean addTrim) {
super(resizable);
Assert.isTrue(widthInPixels >= 0);
this.width = widthInPixels;
this.addTrim = addTrim;
}
³Æ¥«¥é¥à¤ÎÇØ·Ê¿§¤äʸ»ú¤Î¿§¡¢¥Õ¥©¥ó¥È¤Ê¤É¤òÀßÄꤹ¤ë †¤¤¤í¤¤¤í¥µ¥¤¥È¤òõ¤·¤Æ¡¢¤ß¤Ä¤«¤ó¤Í¤¨¤Ê¤¢Ä¾ÀÜTable¤ò¤¤¤¸¤ë¤·¤«¤Í¡¼¤«¤Ê¤È»×¤Ã¤Æ¤¿¤é¡¢Eclipse¤ò¤Î¥½¡¼¥¹¤òÄ´¤Ù¤Æ¤¤¤Æ¡¢¸«¤Ä¤±¤Þ¤·¤¿¡£TableViewer?¤Ê¤É¤Ë¥»¥Ã¥È¤¹¤ëLabelProvider?¤ËITableColorProvider?¡¢ITableFontProvider?¤òimplements¤µ¤»¤ì¤Ð¤è¤¤¤Î¤Ç¤·¤¿¡£¤·¤«¤·¡¢¤³¤ì¤¯¤é¤¤¤ÎÆüËܸì¾ðÊ󤬤ʤ¤¤È¤Ê¤ë¤È¡¢¡¢¡¢¡¢¡£¡£¤¬¤ó¤Ð¤ó¤Ê¤¤¤È¤Í¡£ ¤³¤Îµ»ö¤Ï ¸½ºß¤Î¥¢¥¯¥»¥¹:19413 |