2012-03-31 26 views
0

色を使用するライブラリを使用していますが、色の機能が必要です。どういうわけか "キャスト"なんかに何かできることがあるので、私はカラーの方法を使うことができますか?Javaで色を色に変更する

--EDIT--

カラーjxl.format.Colourあります。色はaですjava.awt.Color

色は、限定された機能を提供する内部ライブラリクラスです。少し高度な操作をしたいと思います。その上brighter()darker()方法、および:色は私に多くのオプションをgiveaに対し Colour bgcol = Colour.BLUE;

  • :たとえば:色で

    • 私は、特定の色を割り当てることができます。

    マイライブラリ力、私は、例えば、色を使用するには:メソッドsetBackground(Colour)は、引数(カラー)には適用されません。

  • +0

    「Colour」とは​​何ですか? –

    +1

    ああ...私の脳。私はあなたがもっと説明する必要があると思う。 – Jivings

    +0

    これは、標準のExcelカラーパレットで使用できるさまざまな色を含む列挙クラスです – Hurdler

    答えて

    2

    私が理解している通り、Colourという表現はすべてColorにキャストしようとしています。ライブラリファイルの検索と置換が最も適切かもしれないかどうかを指定していないので、このフィックスアップを実行するための汎用インターフェースを定義しようとしているとします。これらの2つを一緒に接着したいという欲求以外に、あなたのコードに他の必要性を指定していません。あなたが持っている可能性のあるライブラリやコードの依存関係を満たすために、他のクラスにシムを入れたいですか?それは伝えるのが難しいです。

    classes aren't first-class objects in Java,のため、Colorに置き換えるColourのインスタンスごとに、一連のインターフェイスまたはサブクラスを定義することでこれを実行できます。 それとも、我々はJava reflection.

    これらといくつかのクレイジーなことを行うことができているが、もちろん、あなたが表現してきたcode smellに現職をハッキング:繰り返しあなたのクラスごとにインタフェース名を修正しようとするはるかに困難ですColourという名前の各クラスとインターフェイスするためのIDEルールまたは既存のコードの変更を定義するよりも、だから、実際には、Java言語の機能を意図した範囲を超えて悪用することで、この問題を回避しようとする試みに後者を推奨します。

    編集:編集者からの詳細は、interface-staplingです。私は他の答えに残りを残します。

    4

    最初に、あなたが実際に何を求めているかを明記してください。あなたのColourjxl.format.Colourで、Colorjava.awt.Colorですが、それは推測できます。

    これが正しい場合、Color enumはgetRGB()メソッドを使用して、赤、緑、青の色成分を返します(私は英語です、私はそのように自然に色を書きます)。 java.awt.Colorクラスには、これらのコンポーネントを受け入れるコンストラクターがあります。あなたが行うことができますので、

    public static Color convert(Colour col) { 
        return new Color(
         col.getDefaultRGB().getRed(), 
         col.getDefaultRGB().getGreen(), 
         col.getDefaultRGB().getBlue()); 
    } 
    

    新しいColorインスタンスのすべての時間を作成し保存するには、EnumMapで翻訳を保存することができます。

    +0

    はい、これは私が探しているものです。しかし、 'col.getRGB()'は 'getRGB()メソッドはColour'型のために定義されていません。また、RGB値を簡単に記述することもできます。 – Hurdler

    +0

    +1 OPの前に精神的な、Googleが仲介するデバッグはこれらを特に言及しました。いいキャッチ! :) – MrGomez

    +0

    @Hurdler:申し訳ありません - 私はGoogleの結果を詰め込み、APIの正確な名前を忘れていました。 –