Выделите NSToolbarItems

У вас есть пара вещей.

Во-первых, вы забыли присвоить переменной count значение. В Java этой переменной будет присвоено значение по умолчанию 0. Это означает, что эта строка создает массив размером 0:

obs = new objects[count];

В Java массивы не имеют изменяемого размера. Это также означает, что вы не можете сделать это:

for(objectNumber = 0;objectNumber <=4;objectNumber++){
  obs[index++] = new objects(random(0,width),random(0,height),2);

Вы пытаетесь добавить больше элементов, чем для массива имеют индексы. Это не работает в Java.

Вместо этого вам нужно задать массиву заданную длину, а затем использовать только цикл с этой длиной.

Бесстыдная самореклама: здесь - учебник по массивам. Вы также можете найти дополнительную информацию в Справочник по обработке и в Google.

После того, как вы это исправите, вы также смешаете здесь некоторый синтаксис JavaScript:

function draw(){

Этот синтаксис не работает в Java. Вам нужно определить свою функцию, используя тип возвращаемого значения. В частности, функция draw() имеет тип возвращаемого значения void:

void draw(){

Пока мы занимаемся этим, пожалуйста, приобретите привычку следовать стандартным соглашениям об именах и отступам. Переменные и функции должны начинаться с буквы нижнего регистра, а классы должны начинаться с буквы верхнего регистра. Правильный отступ в вашем коде облегчает чтение, а также помогает вам.

Лучший совет, который я могу вам дать, - начинать с меньшего . Начните с простого эскиза Обработка, который просто делает что-то простое, например, показывает один эллипс. Затем добавьте к этому одну маленькую вещь и продолжайте работать небольшими шагами. Вы пытаетесь сделать много всего за один раз, что, как вы узнали, приведет только к головным болям.

Наконец, пожалуйста, не оскорбляйте себя. Хорошо быть новичком в чем-то. Я настоятельно рекомендую отредактировать ваш пост, чтобы удалить места в вашем посте, где вы называете себя.

Удачи.

7
задан duskwuff 2 October 2014 в 23:44
поделиться

3 ответа

Чтобы подробно остановиться на ответе Chuck's, просто необходимо сделать контроллер делегатом NSToolBar и реализовать toolbarSelectableItemIdentifiers: метод делегата в нем. Например, следующая реализация позволит, Вы сохранить подсветку выделения на каждом объекте панели инструментов за исключением того маркировали "Inspect":

- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
{
    NSMutableArray *allIdentifiers = [[NSMutableArray alloc] init];

    for (NSToolbarItem *toolbarItem in [toolbar items])
    {
        if (![[toolbarItem label] isEqualToString:@"Inspect"])
            [allIdentifiers addObject:[toolbarItem itemIdentifier]];
    }

    return [allIdentifiers autorelease];
}

Я кэширую массив allIdentifiers в переменной экземпляра, когда я делаю что-то вроде этого, так, чтобы я только сделал конструкцию массива однажды.

14
ответ дан 6 December 2019 в 06:38
поделиться

Посмотрите Выбираемые Объекты Панели инструментов в документации Какао.

5
ответ дан 6 December 2019 в 06:38
поделиться

Если вы создали свою панель инструментов в Interface Builder, вы можете щелкнуть на отдельных NSToolbarItems и установить флажок Selectable в инспекторе для тех, которые вы хотите иметь такой вид. Код не требуется.

8
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: