JavaFX ColorPickerでColorを選択しました。今私は16進文字列としてそれを保存する必要があります。 thisメソッドが見つかりましたが、JavaFXの場合は適用されません。 JavaFXにはgetRGB()メソッドを持たない独自のColorクラスがあり、メディエーション型変換として使用できます。JavaFX ColorPickerカラーから16進数文字列を取得するには?
答えて
:
String hexColor = "#"+red+green+blue;
これはアイデア、完全なコード(コピーpastable)であります
// 8 symbols.
String hex1 = Integer.toHexString(myColorPicker.getValue().hashCode());
// With # prefix.
String hex2 = "#" + Integer.toHexString(myColorPicker.getValue().hashCode());
// 6 symbols in capital letters.
String hex3 = Integer.toHexString(myColorPicker.getValue().hashCode()).substring(0, 6).toUpperCase();
getGreen()
、getBlue()
、getRed()
のメソッドを使用して、16進数に変換できます。その後、赤と青のための
Color c;
int green = c.getGreen()*255;
Integer.toHexString(green);
繰り返し、これを:これはトリックはありません
public class TestColor {
public TestColor() {
Color c = Color.ALICEBLUE;
int green = (int) (c.getGreen()*255);
String greenString = Integer.toHexString(green);
int red = (int) (c.getRed()*255);
String redString = Integer.toHexString(red);
int blue = (int) (c.getBlue()*255);
String blueString = Integer.toHexString(blue);
String hexColor = "#"+redString+greenString+blueString;
System.out.println(hexColor);
System.out.println(c.toString());
}
public static void main(String[] args) {
new TestColor();
}
}
これはうまくいきません。いずれかのコンポーネントがゼロの場合、 '00'ではなく '0'になります。 –
色をウェブのカラーコード:
public class FxUtils
{
public static String toRGBCode(Color color)
{
return String.format("#%02X%02X%02X",
(int)(color.getRed() * 255),
(int)(color.getGreen() * 255),
(int)(color.getBlue() * 255));
}
}
ここでの回答のうち、黒やその他の単純な色の例外はありません。 – Dragon
私はより良い解決策があると思います。
希望します。
import javafx.scene.paint.Color;
/**
*
* @author Marcos Martinewski Alves
*/
public class ColorUtils {
public static String colorToHex(Color color) {
return colorChanelToHex(color.getRed())
+ colorChanelToHex(color.getGreen())
+ colorChanelToHex(color.getBlue())
+ colorChanelToHex(color.getOpacity());
}
private static String colorChanelToHex(double chanelValue) {
String rtn = Integer.toHexString((int) Math.min(Math.round(chanelValue * 255), 255));
if (rtn.length() == 1) {
rtn = "0" + rtn;
}
return rtn;
}
}
return String.format("#%02X%02X%02X",
((int)color.getRed())*255,
((int)color.getGreen())*255,
((int)color.getBlue())*255);
の現在受け入れられて答えたものの中で最も作業の答えは、現在利用可能では(参考のために以下)ゾンのある
// 8 symbols.
String hex1 = Integer.toHexString(myColorPicker.getValue().hashCode());
// With # prefix.
String hex2 = "#" + Integer.toHexString(myColorPicker.getValue().hashCode());
// 6 symbols in capital letters.
String hex3 = Integer.toHexString(myColorPicker.getValue().hashCode()).substring(0, 6).toUpperCase();
この方法が問題に実行されますが最初のゼロの自動削除。色の16進数の値が0(例えば#000000、#00A3FFなど)で始まる場合、開始ゼロは自動的に削除され、文字列が短すぎると16進コードとして完全に機能しません。 Color.BLACKは、不透明度のみを維持するため、16進数「#FF」を生成します。以下のメソッドは、JavaFX 8u112の時点で、カラーから16進への変換を完全に解決します。
String colorToHex(Color color) {
String hex1;
String hex2;
hex1 = Integer.toHexString(color.hashCode()).toUpperCase();
switch (hex1.length()) {
case 2:
hex2 = "000000";
break;
case 3:
hex2 = String.format("00000%s", hex1.substring(0,1));
break;
case 4:
hex2 = String.format("0000%s", hex1.substring(0,2));
break;
case 5:
hex2 = String.format("000%s", hex1.substring(0,3));
break;
case 6:
hex2 = String.format("00%s", hex1.substring(0,4));
break;
case 7:
hex2 = String.format("0%s", hex1.substring(0,5));
break;
default:
hex2 = hex1.substring(0, 6);
}
return hex2;
}
これは私が通過したトラブルを誰かに救うことを望みます!
キャストの優先順位が高いため、最初のソリューションではすべてのJavaバージョンでゼロのみが生成されるため、基本的には常に「0 * 255」 – Midnightas
- 1. 文字列を16進数と16進数に変換する方法は?
- 2. 文字[16進数]から整数
- 3. 16進数の文字列を16進数のデータに変換する
- 4. javascript文字列に16進数のエスケープ
- 5. 16進文字列を10進数に変換する
- 6. コマンドラインから32桁の16進数字のランダムな文字列を取得する方法は?
- 7. 16進数の値を文字列から16進数のカラーコードに変換する
- 8. 16進数の文字列をバイト[]に変換するには
- 9. JavaのUnicodeの16進数文字列
- 10. 整数へのJ2ME 16進文字列
- 11. VB6 16進数文字列 - リテラル値woes
- 12. XcodeからJavascriptに16進数のカラー値を渡す
- 13. 16進数の文字列をUTF-16ファイルに書き込む
- 14. 文字列を16進数に変換する方法は?
- 15. 文字列内の16進文字
- 16. Pythonの16進数文字列の文字列フォーマット
- 17. 16進数文字列を32ビットバイナリ文字列に変換する
- 18. BSONオブジェクトのOIDを16進文字列として取得する方法は?
- 19. 16進数の文字で表現された16進数
- 20. UDPに16進数と文字列を送信する
- 21. C#文字列を16進数に変換する
- 22. 16進数の文字列をPythonに変換する
- 23. arduinoプラットフォームの文字列を16進数に変換する
- 24. 16進数の文字列を文字に変換しますか?
- 25. 16進数のNSStringから10進数を取得する方法
- 26. 10進文字列で表される64ビット整数を16進文字列に変換する方法
- 27. ページソースから16進数を実際の文字列値に変換します
- 28. SQLite - 16進値からcharまたは文字列へ
- 29. 10桁の数字を16進数の文字列に変換する
- 30. c:長い文字列内の16進数を解析する
これは簡単で、うまくいきます。 – Marc
これは脆弱な解決策です。ハッシュコードの生成は実装依存であるため、それ以降のリリースでは確実に機能しません。 (たとえば、opacyなどのハッシュコードに別のフィールドが含まれている場合) – Balage1551
良い仕事です。これは助けてください –