Отказ от ответственности: в настоящее время я много занимаюсь Java, но в основном это обработка данных, алгоритмические вещи и очень решительно не графика или UX. Моя идея видеоигр высокой интенсивности - 8-битный понг.
Я натолкнулся на этот фрагмент кода в приложении. Я не могу понять, какую проблему должен решить paintComponent
.
JPasswordField pass = new JPasswordField(35) {
@Override
protected void paintComponent (Graphics g) {
g.setColor(getBackground());
Rectangle r = g.getClipBounds();
g.fillRect (0, 0, r.width, r.height);
super.paintComponent(g);
}
};
Это выглядит как будто он пытается заполнить некоторую область текущим цветом фона, но где "границы клипа" должны быть, и почему это не должно было происходить, находится за пределами моей опыт. Поиск остальной части исходного файла для «клипа» ничего не дал.
Код довольно старый - написан во времена Java 1.5 - но приложение все время работает под текущими JRE (Java 8 и 9 на момент написания статьи). Никогда не было никаких визуальных странностей, о которых сообщалось в поле пароля. Поле отображается в другом скучном JPanel.
Автор кода давно покинул компанию. На самом деле, замена автора покинула компанию до моего приезда. Я не верю, что кто-либо, имеющий отношение к этому разделу кода, все еще работает здесь, поэтому никто не спрашивает. (Меня зовут, чтобы сделать много уколов для таких команд.) Я обнаружил, что многие из их старого кода были грубо-культовыми, потому что они скопировали его из какого-то случайного проекта в другом месте в компания, так что это может быть больше того же самого.
В духе «ткни в него палкой и посмотри, что сломается», я выполнил какую-то чрезвычайно простую игру: заменил getBackground()
на Color.MAGENTA
, чтобы посмотреть, не стало ли что-нибудь в программном обеспечении ярко-розовым, полностью удалив анонимный подкласс чтобы узнать, не стало ли что-нибудь грушевидным и т. д. Похоже, что ни одно из изменений не оказало заметного влияния на Windows.
Конечно, отсутствие доказательств в сравнении с доказательствами отсутствия и все такое, я не могу доказать, что это не нужно на какой-то платформе. Но я хотел бы добавить комментарий о том, что, возможно, пытался сделать старый автор ...