Как установить SWT Tabitem неактивным? - PullRequest
2 голосов
/ 06 декабря 2011

Я разрабатываю графический интерфейс на основе org.eclipse.swt.widgets.TabItem.

Есть ли способ показать TabItem внутри TabFolder как "неактивный", т. Е. С обычным светло-серым цветом и не включив все активные элементы?

Это что-то в других системах, которые я могу спроектировать.Я думал, что это будет возможно и с помощью SWT, но я новичок в этой среде, и после поиска в Google по этой теме я не смог найти никакого решения.Возможно ли это вообще?

Ответы [ 2 ]

6 голосов
/ 07 декабря 2011

Невозможно установить TabItem неактивным (отключено), потому что тогда не будет способа нажать на выбранную TabItem.Но довольно просто отключить содержимое выбранного TabItem.Просто получите Control, который привязан к экземпляру TabItem, и вызовите setEnable(false).

/*
 * TabFolder example snippet: create a tab folder (six pages)
 *
 * For a list of all SWT example snippets see
 * http://www.eclipse.org/swt/snippets/
 */
import org.eclipse.swt.*;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.*;

public class TabItemDisable {

public static void main (String [] args) {
    Display display = new Display ();
    final Shell shell = new Shell (display);
    final TabFolder tabFolder = new TabFolder (shell, SWT.BORDER);
    Rectangle clientArea = shell.getClientArea ();
    tabFolder.setLocation (clientArea.x, clientArea.y);
    for (int i=0; i<6; i++) {
        TabItem item = new TabItem (tabFolder, SWT.NONE);
        item.setText ("TabItem " + i);
        Button button = new Button (tabFolder, SWT.PUSH);
        button.setText ("Page " + i);
        item.setControl (button);
    }
    tabFolder.pack ();

    // disabling content of selected TabItems
    tabFolder.getTabList()[0].setEnabled(false);
    tabFolder.getTabList()[2].setEnabled(false);
    tabFolder.getTabList()[4].setEnabled(false);

    shell.pack ();
    shell.open ();
    while (!shell.isDisposed ()) {
        if (!display.readAndDispatch ()) display.sleep ();
    }
    display.dispose ();
}
} 
1 голос
/ 04 апреля 2019

Ответ @Sorceror был довольно крутым. Но у меня есть небольшое замечание, что код

getTabList () в

tabFolder.getTabList()[0].setEnabled(false);
tabFolder.getTabList()[2].setEnabled(false);
tabFolder.getTabList()[4].setEnabled(false);

означает «список порядка вкладок», а не сам «элемент табуляции». Поэтому, если вы хотите установить некоторые Enabled, некоторые отключить (tabFolder.getTabList () [0] .setEnabled (true);) порядок может быть неправильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...