Java Abstract Toolkit をマスターしている場合は、Java AWT Color Class のアプリケーションを学習する必要があります。多くのコンストラクターとメソッドが関係するため、最初は怖く感じるかもしれません。しかし、心配する必要はありません。私たちがカバーします:) Java AWT カラーに関するこの完全な概要により、新しいカラー タイプを作成してそれを管理する方法をすぐに学ぶことができます。スキルを磨くのに役立ついくつかの練習テストも提供します。
クラス java.awt.Color を宣言する方法は次のとおりです。
JavaのAWTカラークラスとは何ですか?
AWT カラーの主な目的は、開発者が RGB (赤、緑、青)、RGBA (赤、緑、青、アルファ)、または HSB (色相、彩度、BRI コンポーネント) パッケージを使用して Java コードを使用して新しい色を作成できるようにすることです。このクラスには、シェードのコードと不透明度/透明度の値という 2 つの値が含まれています。
public class Color
extends Object
implements Paint, Serializable
Class.java.awt.Color を使用してさまざまなタイプの色を宣言するには、開発者はコンストラクターを使用します。ここでそれらを見ていきます。
Java の AWT.Color コンストラクター
作成する色のパラメータに応じて、特定のタイプのカラー コンストラクターを使用する必要があります。これらはいくつかあります。1 つずつ調べてみましょう。Color(float r, float g, float b)
は、RGB カラースキームで不透明な色を定義するために使用するクラスです。色の範囲は 0.0 ~ 0.1 の範囲で指定できます。Color(float r, float b, float g, float a)
RGBA カラーを定義するクラスです (使用可能な値の範囲は 0.0 と 0.1)。Color(ColorSpace c, float[], co, float a)
事前に指定した ColorSpace で色を定義します。開発者は、定義されたアルファの float 配列内の色コンポーネントの範囲を指定します。Color(int, rgb)
RGBカラー(不透明)を作成するクラスです。コンストラクターのコンポーネント値に必ず注意してください。赤は 16 ~ 23、緑は 8 ~ 15、青は 0 ~ 7 です。Color(int r, int g, int b)
- 不透明な RGB カラーを定義するために使用されるメソッド。色の値は 0 ~ 255 の範囲にする必要があります。Color(int r, int g, int b, int a)
- RGBA スキーム (0 ~ 255) で色を作成します。Color(int rgba, boolean b)
定義された組み合わせ値内で sRGB カラーを作成するために使用されます。値の範囲は、アルファの場合は 24 ~ 31、赤の場合は 16 ~ 23、緑の場合は 8 ~ 15、青の場合は 0 ~ 7 です。
Java.awt.Transparency
。
TRANSLUCENT
色にアルファ値が含まれているかどうかを表し、0 と 1 の 2 つの値があります。OPAQUE
アルファ値 1 をオブジェクトに割り当て、オブジェクトが完全に不透明になることを保証します。BITMASK
絶対的な不透明度または透明度の値を表し、(0;1) の範囲内にあります。0 は完全な透明度、1 は極度の不透明度です。
Java AWT カラー クラスで使用する上位 15 のメソッド
色を操作したり、その暗さや明るさを調整したりするために、Java 開発者はさまざまな方法を利用します。それらは数十あるので、すべてを暗記する必要はありません。ただし、最も広く使用されている Java AWT Color メソッドに関しては、リストを 15 に絞り込みました。Java API ドキュメントを参照せずにこれらを覚えておくと、開発者にとって役立ちます。より暗い()
このメソッドは、すでに定義した色の暗いバージョンである新しい色を作成するために使用されます。 例:
Color.green.darker()
一度適用しただけでは必要な色合いを作成できない場合はdarker()
、以下に示すように、必要に応じて何度でもこの方法を再適用してください。
Color.green.darker().darker().darker().darker().darker()
より明るく()
名前が示すように、Color brighter()
すでに持っている色合いを明るくするために使用されます。と同様にdarker()
、単一の色に対して複数回使用できます。 例:
Color myColor = Color.RED;
JLabel label = new JLabel("First Name");
label.setForeground(myColor.brighter());
int getAlpha()
色のアルファ成分を返したい場合は、このメソッドを使用します。アルファ値は 0 ~ 255 の範囲内であることに注意してください。メソッドの適用と戻りの例を次に示します。 例:
alpha = Color.black.getAlpha();
return new Color(components[0], components[1], components[2], alpha);
静的カラー getColor(String nm)
Java 開発者は、このメソッドを使用して、システム プロパティを使用して色を見つけることができます。同様の目的を処理する他の方法もあります。static Color getColor(String nm, int v)
static Color getColor(String nm, Color v)
静的カラーデコード (文字列 nm)
このメソッドは色を文字列として表示するために使用されます。変換が完了すると、開発者は定義された不透明な色を取得します。 例:
public static Color decodeColor(String hexColor) {
return Color.decode(hexColor);
PaintContext createContext(ColorModel cm, Rectangle r, Rectangle2D r2d, AffineTransform xform, RenderingHints ヒント)
この方法は複雑に見えますが、見た目よりも操作は簡単です。Paint Context CreateContext()
繰り返しの単色のパターンを定義するために使用されます。 例:
public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds,
AffineTransform xform, RenderingHints hints)
{
try
{
return new AxialShadingContext(shading, cm, xform, matrix, deviceBounds);
}
catch (IOException e)
{
LOG.error("An error occurred while painting", e);
return new Color(0, 0, 0, 0).createContext(cm, deviceBounds, userBounds, xform, hints);
}
}
}
float[] getComponents(ColorSpace cspace, float[] compArray)
これは、色に適用してその浮動小数点配列とアルファ コンポーネントを返す Java メソッドです。このメソッドは、cspace によって定義された特定のオブジェクトに適用されますColorSpace
。 例:
public float[] getComponents(ColorSpace cspace, float[] compArray) {
return myColor.getComponents(cspace, compArray);
}
カラースペース getColorSpace()
Java 開発者は、このメソッドを使用して、選択した色の色空間を返すことができます。特定のエントリの色空間を取得するもう 1 つの方法は、Arrays.to.String を適用することです。以下の例に示すように、これはより複雑な戦略です 。
public class Main {
public static void main(String[] args) {
Color myColor = Color.RED;
System.out.println(Arrays.toString(myColor.getComponents(ColorSpace.getInstance(ColorSpace.CS_CIEXYZ),null)));
getHSBColor(float h, float s, float b)
Java 開発者は、このメソッドを適用して、HSB モデルの値に基づいて新しいカラー オブジェクトを作成します。 例:
private Color colorAt(int y)
{
return Color.getHSBColor(1 - (float) y / (height - 1), 1, 1);
}
}
getGreen() returns the green component in the range 0-255 in the default sRGB space.
getGreen()
この Java メソッドは、作成した色の緑コンポーネントの値を返します。すべての値は、RGB カラースキームの緑に対応する範囲内に収まります。 例:
Color clickBoxColor = new Color(color.getRed(), color.getGreen(), color.getBlue(), 20);
getRed()
と同様にgetGreen()
、getRed
指定された色の赤成分の値を返します。上の例でこのメソッドがどのように適用されるかはすでに見ました。
getBlue()
このメソッドは、RGB カラースキームの値の範囲内の青の値を返します。同様に、 の使用例についてはgetBlue()
、 の説明を参照してくださいgetGreen()
。
getAlpha()
getAlpha() メソッドは、開発者が特定の色のアルファ値を見つけたい場合に Java で使用されます。RBG と同様に、すべての色のアルファは 0 ~ 255 の範囲内にあります。 例:getAlpha()
ループの一部として使用する方法を次に示します。
int alpha = color.getAlpha();
if (alpha != 255)
{
setStrokeAlpha(alpha);
strokeAlphaSet = true;
getTransparency()
このメソッドは、作成時に色に対してユーザーまたは別の開発者が指定した透明度の値を返します。 例:
public int getTransparency() {
return myColor.getTransparency();
ブール値等しい(オブジェクトobj)
この方法は、2 つの色を比較する場合に非常に便利です。これにより、Java 開発者は 2 つのカラー オブジェクトが等しい値を持つかどうかを知ることができます。 例:
import java.awt.Color;
public class Main {
public static void main(String[] a) {
Color myBlack = new Color(0, 0, 0); // Color black
Color myWhite = new Color(255, 255, 255); // Color white
System.out.println(myBlack.equals(myWhite));
}
}
等しい(オブジェクトオブジェクト)
と同様boolean equals(Object obj)
、これも比較法です。これを使用して、色のオブジェクトが互いに等しいかどうかを判断します。 例:
Object a = new Object(); Object b = new Object(); return(a.equals(b));
Java で使用される主な色のガイド
Java で色の操作に使用されるメソッドを理解できたので、次に扱うフィールドのタイプを見てみましょう。これらは、Java 開発者が定義できる実際の静的色です。色を定義するには、名前を入力するか (必ず公式ドキュメントの記載どおりに正確に入力してください)、RGB 値を指定します。開発者が使用するパレットを見てみましょう。フィールド名 | 説明 |
スタティックカラー ブラック(BLACK) | 黒の色を定義します |
静的色 ホワイト (WHITE) | 白色を定義します |
静的色 青 (BLUE) | 青を定義するために使用されます |
静的色 グレー (GRAY) | グレー色を定義します |
静的色ダークグレー (DARK_GRAY) | 濃いグレーの色合いを定義します |
静的色ライトグレー (LIGHT_GRAY) | 明るいグレーの色合いを定義します |
静的色 緑 (GREEN) | 緑色を定義するために使用されます |
静的カラー マゼンタ (MAGENTA) | マゼンタの色合いを定義します |
静的カラー ピンク (PINK) | Java でのピンクの定義 |
静的色 オレンジ (ORANGE) | Javaでオレンジ色を作成します |
静的色 黄色 (YELLOW) | 黄色を定義するために使用されます |
静的色 赤 (RED) | Javaで赤色を定義する |
Java で AWT.Color を使用するための練習問題
Java での AWT Color のしっかりした基礎はできたと思いますか? いくつかの実践的な問題を解決して、これらのスキルをテストしてみましょう。ここでは、コンストラクターと一般的なメソッド、および色に関連しない他の Java ツールを適用する必要があります。 練習問題 #1。プログラム ユーザーが色の RGB レベルを調整できるようにするカスタム コンポーネントを作成します ( と同様RGBColorChooser
)。getColor() をコンポーネントに必ず含めてください。コンポーネントをアプレットではなくパネルのサブクラスにします。 回答: これはかなり複雑な問題です。管理可能な手順に分けて考えてみましょう。
- を
RGBChooser
コンポーネントに変換します。 - 新しいルーチンをコンポーネントに追加します -
getColor()
。 - 追加して
setColor()
色を設定します。
import java.awt.*;
import java.awt.event.*;
public class RGBChooserComponent extends Panel implements AdjustmentListener {
private Scrollbar redScroll, greenScroll, blueScroll; // Scroll bars.
private Label redLabel, greenLabel, blueLabel; // For displaying RGB values.
private Canvas colorCanvas; // Color patch for displaying the color.
public RGBChooserComponent() { // Constructor.
/*Now let’s add scrollbars with values from 0 to 255. */
redScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
greenScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
blueScroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 10, 0, 265);
/* Create Labels showing current RGB and HSB values. */
redLabel = new Label(" R = 0");
greenLabel = new Label(" G = 0");
blueLabel = new Label(" B = 0");
/* We are setting backgrounds for Scrollbars and Labels, so they get the default
gray background of the applet. */
redScroll.setBackground(Color.lightGray);
greenScroll.setBackground(Color.lightGray);
blueScroll.setBackground(Color.lightGray);
redLabel.setBackground(Color.white);
greenLabel.setBackground(Color.white);
blueLabel.setBackground(Color.white);
/* Establish a panel that would listen for changes to the Scrollbars' values */
redScroll.addAdjustmentListener(this);
greenScroll.addAdjustmentListener(this);
blueScroll.addAdjustmentListener(this);
/* Add a canva, the background color of which will always match the currently selected color. */
colorCanvas = new Canvas();
colorCanvas.setBackground(Color.black);
/* Create the applet layout, which consists of a row of
three equal-sized regions holding the Scrollbars,
the Labels, and the color patch. The background color
of the applet is gray, which will show around the edges
and between components. */
setLayout(new GridLayout(1,3,3,3));
setBackground(Color.gray);
Panel scrolls = new Panel();
Panel labels = new Panel();
add(scrolls);
add(labels);
add(colorCanvas);
/* Add the Scrollbars and the Labels to their respective panels. */
scrolls.setLayout(new GridLayout(3,1,2,2));
scrolls.add(redScroll);
scrolls.add(greenScroll);
scrolls.add(blueScroll);
labels.setLayout(new GridLayout(3,1,2,2));
labels.add(redLabel);
labels.add(greenLabel);
labels.add(blueLabel);
} // end init();
public Color getColor() {
// Get the color currently displayed by the component.
int r = redScroll.getValue();
int g = greenScroll.getValue();
int b = blueScroll.getValue();
return new Color(r, g, b);
}
public void setColor(Color c) {
// Set the component to display the given color.
// (Ignore this if c is null.)
if (c != null) {
int r = c.getRed(); // Get the color levels from the color.
int g = c.getGreen();
int b = c.getBlue();
redLabel.setText(" R = " + r); // Set the labels.
greenLabel.setText(" G = " + g);
blueLabel.setText(" B = " + b);
redScroll.setValue(r); // Set the scrollbars.
greenScroll.setValue(g);
blueScroll.setValue(b);
colorCanvas.setBackground(new Color(r,g,b)); // Set the canvas.
colorCanvas.repaint();
}
}
public Dimension getMinimumSize() {
// Specify the minimum reasonable size of this component.
return new Dimension(150,40);
}
public Dimension getPreferredSize() {
// Specify the preferred size of this component.
return new Dimension(280,80);
}
public void adjustmentValueChanged(AdjustmentEvent evt) {
// This is called when the user has changed the values on
// one of the scrollbars. All the scrollbars are checked,
// the labels are set to display the correct values,
// and the color patch is reset to correspond to the new color.
int r = redScroll.getValue();
int g = greenScroll.getValue();
int b = blueScroll.getValue();
redLabel.setText(" R = " + r);
greenLabel.setText(" G = " + g);
blueLabel.setText(" B = " + b);
colorCanvas.setBackground(new Color(r,g,b));
colorCanvas.repaint(); // Redraw the canvas in its new color.
} // end adjustmentValueChanged
public Insets getInsets() {
// The system calls this method to find out how much space to
// leave between the edges of the applet and the components that
// it contains. I want a 2-pixel border at each edge.
return new Insets(2,2,2,2);
}
} // end class RGBColorChooser
GO TO FULL VERSION