Нимб Java LAF с прозрачными текстовыми полями

Ваша функция может показаться довольно простой, но сейчас, вероятно, самое время ее немного изменить. Я бы предложил создать функцию, которая принимает одну пару значений и возвращает для нее оценку - это облегчает точное представление о том, что происходит, - а затем вызывает эту функцию для каждой строки в вашем rolls_array. Функция score может выглядеть примерно так:

LOSE = -1
TIE = 0
WIN = 1

def score(one, two):
    total = one + two
    if total in (2, 3, 12):
        return LOSE
    elif total in (7, 11):
        return WIN
    else:
        return TIE

Затем вы можете применить это к массиву следующим образом:

>>> rolls = np.array([[1, 2], [5, 6]])
>>> result = np.array([score(*roll) for roll in rolls])
>>> print(result)
[-1 1]

Чтобы интегрировать это в вашу функцию game_session, затем вы можете удалить цикл for и просто изменить возврат на

    return np.array([score(*roll) for roll in rolls_array])
11
задан Glorfindel 5 March 2019 в 02:00
поделиться

4 ответа

Я столкнулся с этой той же проблемой на прошлой неделе с помощью JTextPane. setOpaque () метод работает как ожидалось при использовании любого стиля кроме нимба. По-видимому, стиль нимба изменяет поведение, которое мы приехали для ожидания с setOpaque () для многих Компонентов. В зависимости от того, как Вы смотрите на него, это можно считать ошибкой. Проверьте комментарии к этому солнцу bugid:

нимб непрозрачная ошибка

Обходное решение, которое работало на меня, было:

myPane.setOpaque(false); // added by OP
myPane.setBorder(BorderFactory.createEmptyBorder());
myPane.setBackground(new Color(0,0,0,0));

Отметьте в OP: Я также должен был гарантировать setOpaque (ложь) для JTextField так, чтобы родительский фон был нарисован - просто хотел упомянуть это для других, которые следуют в случае, если они экспериментировали с (верным) setOpaque, как я имел.

17
ответ дан 3 December 2019 в 07:14
поделиться

Эй там Обезьяна программного обеспечения.

mmhh что относительно того, чтобы установить замену подклассов UI, которые на самом деле уважают setOpaque поведение.

Я думаю, что это - что-то как setUI или что-то как этот.

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

Ваши звучат, вполне межжалят, у Вас есть какой-либо снимок экрана, который мы видим?

0
ответ дан 3 December 2019 в 07:14
поделиться

От javadoc

общественность освобождает setBackground (Окрасьте bg),

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

Это до стиля для удостаивания этого свойства, некоторые могут принять решение проигнорировать его.

0
ответ дан 3 December 2019 в 07:14
поделиться

Я думаю, что вопрос состоит в том, как интерпретировать "непрозрачный" и "фон". Для JTextfield существует вопрос: "какие видимые части являются фоном?". Я определил бы "фон" как части ограничительного прямоугольника, которые не оттянуты компонентом. Для "круглой" кнопки, например, это будет углами вне круга. Для этого я сказал бы, что у JTextfield нет видимого фона! Это имеет прямоугольную форму и что Вы - взятие, поскольку фон не является образованием поля, но холстом поля.


Опровержение от OP

Это - достаточно интересная идея стоить ответить на в ответе для будущих средств просмотра (в противоположность в комментариях).

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

Я думаю, что это соображение приводит аргумент в пользу существующего (и неправильно понятый) значение isOpaque (). Это также приводит мой аргумент, что setOpaque () не должен существовать и что setBackground (пустой указатель) должен заставить компонент не красить фон.

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

0
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

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