Я попытался добавить число для каждой строки в моем дереве. Дерево и его нумерация работают, но не так велики, так есть ли другой лучший способ реализовать это? потому что, если узел дерева расширен, я должен получить весь расширенный узел дерева и увеличить его нумерацию. Я также использовал TreeViewer для создания дерева.Как создать JFace TreeViewer с нумерацией строк
// base container
Composite composite = new Composite((Composite) parent, SWT.NONE);
composite.setLayout(new GridLayout(2, false));
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
// The container for numbering in the tree
Composite numComposite = new Composite(composite, SWT.NONE);
numComposite.setLayout(new FillLayout(SWT.VERTICAL));
numComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
// the tree container
MyTree tree = new MyTree(composite);
tree.setContentProvider(new ContentProvider());
Label test = new Label(numComposite, SWT.NONE);
test.setText("1");
test = new Label(numComposite, SWT.NONE);
test.setText("2");
test = new Label(numComposite, SWT.NONE);
test.setText("3");
test = new Label(numComposite, SWT.NONE);
test.setText("4");
test = new Label(numComposite, SWT.NONE);
test.setText("5");
Использование отдельных меток даст вам проблемы с выравниванием, так как нет гарантии, что высота строки дерева совпадает с высотой/интервалом между ярлыками и будет варьироваться между платформами.Даже на картинке выравнивание уже ускользает. Я не могу придумать хороший способ сделать это. –
Видя 'MyTree', я хотел бы напомнить, что [элементы управления SWT не предназначены для подкласса] (http://stackoverflow.com/questions/4264983/why-is-subclassing-not-allowed-for-many-of -The-сВТ-контроль). –
Возможно, стоит [Сетка туманности] (http://www.eclipse.org/nebula/widgets/grid/grid.php). Это нумерация строк, но, возможно, не так, как вам хотелось бы. Он будет указывать элементы на основе их положения полностью расширенного дерева, а не просто нумерации видимых элементов от 1 до n. – Baz