цвет Java, представлен 32-битового целого числа в формате ARGB.
Это означает, что наивысший 8 бит является альфа-значением, 255 означает полную непрозрачность, а 0 означает прозрачность. Вы генерируете цвета с альфа-значением 255.
Целое число является знаковым числом, его старший бит указывает, является ли он отрицательным. Когда вы установите все первые 8 бит в 1, фактически все цвета будут отрицательными числами, если вы напечатаете их на экране.
Пример:
System.err.println("Color="+new java.awt.Color(0,0,255,0).getRGB());
gives 255 as you expected - note that this is a fully transparent blue
System.err.println("Color="+java.awt.Color.RED.getRGB());
gives -65536, as the alpha channel value is 255 making the int negative.
Если вы хотите, чтобы увидеть значения RGB, просто сделать логическое И укоротить биты альфа-канала, которые делают десятичное числовое представление отрицательное:
System.err.println("Color="+(java.awt.Color.RED.getRGB() & 0xffffff));
gives you 16711680
В качестве альтернативы вы можете получить представление цвета в шестнадцатеричном виде:
System.err.println("Color="+String.format("%X",java.awt.Color.RED.getRGB() & 0xffffff));
which gives FF0000
Подумайте о том, что 32 бит integer представлен -11338194 ... затем выясните, каковы его 4 8-битные значения ... –
@JonSkeet, ghm. Байт b = (байт) color1 не работает. Извините, я просто научился код –
Ну, вам нужно определить, что «не работает», чтобы это имело смысл ... неясно, чего вы ожидали. –