差分情報適用後の実行イメージ

差分情報
パッチファイル (Unified diffs)
--- ColorPanel.java Mon Jun 01 05:12:13 2009
+++ ColorPanel.java Fri Jun 12 08:12:15 2009
@@ -6,6 +6,8 @@
// パッケージのインポート
import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.Color;
import javax.swing.JPanel;
@@ -15,8 +17,11 @@
import javax.swing.event.ChangeListener;
import javax.swing.JScrollPane;
import javax.swing.JColorChooser;
+import javax.swing.JSlider;
+import javax.swing.JSpinner;
import javax.swing.JViewport;
import javax.swing.ScrollPaneConstants;
+import javax.swing.SpinnerNumberModel;
// JPanelを継承する
public class ColorPanel extends JPanel {
@@ -32,6 +37,27 @@
private JColorChooser jColorChooser = null;
+ // カラーコード連関
+ private JPanel jPanelColorCode = null;
+
+ private JPanel jPanelG = null; // 赤色表示パネル
+
+ private JPanel jPanelR = null;
+
+ private JPanel jPanelB = null;
+
+ private JSlider jSliderR = null; // 赤色スライダ
+
+ private JSlider jSliderG = null;
+
+ private JSlider jSliderB = null;
+
+ private JSpinner jSpinnerR = null; // 赤色スピンボックス
+
+ private JSpinner jSpinnerG = null;
+
+ private JSpinner jSpinnerB = null;
+
// --------------------------------------------------
// コンストラクタ
// --------------------------------------------------
@@ -39,9 +65,9 @@
// 部品の配置
this.add(getJPanelSelectedColor());
this.add(getJScrollPaneColorChooser());
+ this.add(getJPanelColorCode());
// 選択色の初期化
- jPanelSelectedColor.setBackground(clr);
- jColorChooser.setColor(clr);
+ updateSelectedColor(clr);
}
// --------------------------------------------------
@@ -50,7 +76,8 @@
public void setColor(Color clr) {
// 色を設定する
jPanelSelectedColor.setBackground(clr);
- jColorChooser.setColor(clr);
+ // 選択色の更新
+ updateSelectedColor(clr);
}
// --------------------------------------------------
@@ -61,6 +88,41 @@
return jPanelSelectedColor.getBackground();
}
+ // --------------------------------------------------
+ // 選択色の更新
+ // --------------------------------------------------
+ private void updateSelectedColor(Color clr) {
+
+ // 新しく作られた色(clr)と、各種色コンポーネントで選択されている色を比較し、異なれば新しい色に更新する
+
+ // 選択色表示パネル(色の比較はRGB値で行う)
+ if (clr.getRGB() != jPanelSelectedColor.getBackground().getRGB()) {
+ jPanelSelectedColor.setBackground(clr);
+ }
+ // カラーチューザ
+ if (clr.getRGB() != jColorChooser.getColor().getRGB()) {
+ jColorChooser.setColor(clr);
+ }
+ // RGB色表示パネル
+ if (clr.getRGB() != new Color(jPanelR.getBackground().getRed(), jPanelG.getBackground().getGreen(), jPanelB.getBackground().getBlue()).getRGB()) {
+ jPanelR.setBackground(new Color(clr.getRed(), 0, 0));
+ jPanelG.setBackground(new Color(0, clr.getGreen(), 0));
+ jPanelB.setBackground(new Color(0, 0, clr.getBlue()));
+ }
+ // RGB色スライダ
+ if (clr.getRGB() != new Color(jSliderR.getValue(), jSliderG.getValue(), jSliderB.getValue()).getRGB()) {
+ jSliderR.setValue(clr.getRed());
+ jSliderG.setValue(clr.getGreen());
+ jSliderB.setValue(clr.getBlue());
+ }
+ // RGB色スピンボックス
+ if (clr.getRGB() != new Color(Integer.parseInt(jSpinnerR.getValue().toString()), Integer.parseInt(jSpinnerG.getValue().toString()), Integer.parseInt(jSpinnerB.getValue().toString())).getRGB()) {
+ jSpinnerR.setValue(Integer.valueOf(clr.getRed()));
+ jSpinnerG.setValue(Integer.valueOf(clr.getGreen()));
+ jSpinnerB.setValue(Integer.valueOf(clr.getBlue()));
+ }
+ }
+
// ----------------------------------------------------------------------------------------------------
// 以降、ボタンやパネルなどのコンポーネント関連の初期化
// ----------------------------------------------------------------------------------------------------
@@ -93,7 +155,8 @@
// 選択色の変更イベント
jColorChooser.getSelectionModel().addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
- jPanelSelectedColor.setBackground(jColorChooser.getColor()); // 選択色表示パネルに選択色を表示する
+ // 選択色の更新
+ updateSelectedColor(jColorChooser.getColor());
}
});
@@ -106,4 +169,199 @@
}
return jScrollPaneColorChooser;
}
-}
+
+ // カラーコードパネル
+ private JPanel getJPanelColorCode() {
+ if (jPanelColorCode == null) {
+ // グリッドバッグレイアウトを使用する
+ GridBagConstraints gridBagConstraints00 = new GridBagConstraints();
+ gridBagConstraints00.fill = GridBagConstraints.VERTICAL; // 垂直方向に伸ばす
+ gridBagConstraints00.gridx = 1; // マス目の位置(x方向)
+ gridBagConstraints00.gridy = 0; // マス目の位置(y方向)
+ GridBagConstraints gridBagConstraints01 = new GridBagConstraints();
+ gridBagConstraints01.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints01.gridx = 1;
+ gridBagConstraints01.gridy = 1;
+ GridBagConstraints gridBagConstraints02 = new GridBagConstraints();
+ gridBagConstraints02.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints02.gridx = 1;
+ gridBagConstraints02.gridy = 2;
+ GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
+ gridBagConstraints10.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints10.gridx = 0;
+ gridBagConstraints10.gridy = 0;
+ GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
+ gridBagConstraints11.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints11.gridx = 0;
+ gridBagConstraints11.gridy = 1;
+ GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
+ gridBagConstraints12.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints12.gridx = 0;
+ gridBagConstraints12.gridy = 2;
+ GridBagConstraints gridBagConstraints20 = new GridBagConstraints();
+ gridBagConstraints20.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints20.gridx = 3;
+ gridBagConstraints20.gridy = 0;
+ GridBagConstraints gridBagConstraints21 = new GridBagConstraints();
+ gridBagConstraints21.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints21.gridx = 3;
+ gridBagConstraints21.gridy = 1;
+ GridBagConstraints gridBagConstraints22 = new GridBagConstraints();
+ gridBagConstraints22.fill = GridBagConstraints.VERTICAL;
+ gridBagConstraints22.gridx = 3;
+ gridBagConstraints22.gridy = 2;
+ jPanelColorCode = new JPanel();
+ jPanelColorCode.setLayout(new GridBagLayout());
+ jPanelColorCode.add(getJSliderR(), gridBagConstraints00);
+ jPanelColorCode.add(getJSliderG(), gridBagConstraints01);
+ jPanelColorCode.add(getJSliderB(), gridBagConstraints02);
+ jPanelColorCode.add(getJPanelG(), gridBagConstraints11);
+ jPanelColorCode.add(getJPanelR(), gridBagConstraints10);
+ jPanelColorCode.add(getJPanelB(), gridBagConstraints12);
+ jPanelColorCode.add(getJSpinnerR(), gridBagConstraints20);
+ jPanelColorCode.add(getJSpinnerG(), gridBagConstraints21);
+ jPanelColorCode.add(getJSpinnerB(), gridBagConstraints22);
+ }
+ return jPanelColorCode;
+ }
+
+ // 赤色表示パネル
+ private JPanel getJPanelR() {
+ if (jPanelR == null) {
+ jPanelR = new JPanel();
+ jPanelR.setPreferredSize(new Dimension(10, 10)); // サイズ
+ }
+ return jPanelR;
+ }
+
+ // 緑色表示パネル
+ private JPanel getJPanelG() {
+ if (jPanelG == null) {
+ jPanelG = new JPanel();
+ jPanelG.setPreferredSize(new Dimension(10, 10));
+ }
+ return jPanelG;
+ }
+
+ // 青色表示パネル
+ private JPanel getJPanelB() {
+ if (jPanelB == null) {
+ jPanelB = new JPanel();
+ jPanelB.setPreferredSize(new Dimension(10, 10));
+ }
+ return jPanelB;
+ }
+
+ // 赤色カラースライダ
+ private JSlider getJSliderR() {
+ if (jSliderR == null) {
+ jSliderR = new JSlider();
+ jSliderR.setPreferredSize(new Dimension(128, 30)); // サイズ
+ jSliderR.setMaximum(255); // スライダの最大値(0~255)
+ // 目盛り表示設定
+ jSliderR.setForeground(Color.red);
+ jSliderR.setBackground(Color.white);
+ jSliderR.setMajorTickSpacing(16);
+ jSliderR.setMinorTickSpacing(8);
+ jSliderR.setPaintTicks(true);
+ // 値変更時のイベントリスナ
+ jSliderR.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent e) {
+ // 新しく作られた色を、選択色の更新メソッドに渡し、他の部品の色を更新する
+ Color clr = new Color(jSliderR.getValue(), jSliderG.getValue(), jSliderB.getValue());
+ updateSelectedColor(clr);
+ }
+ });
+ }
+ return jSliderR;
+ }
+
+ // 緑色カラースライダ
+ private JSlider getJSliderG() {
+ if (jSliderG == null) {
+ jSliderG = new JSlider();
+ jSliderG.setPreferredSize(new Dimension(128, 30));
+ jSliderG.setMaximum(255);
+ jSliderG.setForeground(Color.green);
+ jSliderG.setBackground(Color.white);
+ jSliderG.setMajorTickSpacing(16);
+ jSliderG.setMinorTickSpacing(8);
+ jSliderG.setPaintTicks(true);
+ jSliderG.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent e) {
+ Color clr = new Color(jSliderR.getValue(), jSliderG.getValue(), jSliderB.getValue());
+ updateSelectedColor(clr);
+ }
+ });
+ }
+ return jSliderG;
+ }
+
+ // 青色カラースライダ
+ private JSlider getJSliderB() {
+ if (jSliderB == null) {
+ jSliderB = new JSlider();
+ jSliderB.setPreferredSize(new Dimension(128, 30));
+ jSliderB.setForeground(Color.blue);
+ jSliderB.setBackground(Color.white);
+ jSliderB.setMaximum(255);
+ jSliderB.setMajorTickSpacing(16);
+ jSliderB.setMinorTickSpacing(8);
+ jSliderB.setPaintTicks(true);
+ jSliderB.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent e) {
+ Color clr = new Color(jSliderR.getValue(), jSliderG.getValue(), jSliderB.getValue());
+ updateSelectedColor(clr);
+ }
+ });
+ }
+ return jSliderB;
+ }
+
+ // 赤色スピンボックス
+ private JSpinner getJSpinnerR() {
+ if (jSpinnerR == null) {
+ jSpinnerR = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1)); // 値の範囲(0から255まで1刻み)
+ jSpinnerR.setPreferredSize(new Dimension(40, 20)); // サイズ
+ // 値変更時のイベントリスナ
+ jSpinnerR.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent e) {
+ // 新しく作られた色を、選択色の更新メソッドに渡し、他の部品の色を更新する
+ Color clr = new Color(Integer.parseInt(jSpinnerR.getValue().toString()), Integer.parseInt(jSpinnerG.getValue().toString()), Integer.parseInt(jSpinnerB.getValue().toString()));
+ updateSelectedColor(clr);
+ }
+ });
+ }
+ return jSpinnerR;
+ }
+
+ // 緑色スピンボックス
+ private JSpinner getJSpinnerG() {
+ if (jSpinnerG == null) {
+ jSpinnerG = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1));
+ jSpinnerG.setPreferredSize(new Dimension(40, 20));
+ jSpinnerG.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent e) {
+ Color clr = new Color(Integer.parseInt(jSpinnerR.getValue().toString()), Integer.parseInt(jSpinnerG.getValue().toString()), Integer.parseInt(jSpinnerB.getValue().toString()));
+ updateSelectedColor(clr);
+ }
+ });
+ }
+ return jSpinnerG;
+ }
+
+ // 青色スピンボックス
+ private JSpinner getJSpinnerB() {
+ if (jSpinnerB == null) {
+ jSpinnerB = new JSpinner(new SpinnerNumberModel(0, 0, 255, 1));
+ jSpinnerB.setPreferredSize(new Dimension(40, 20));
+ jSpinnerB.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent e) {
+ Color clr = new Color(Integer.parseInt(jSpinnerR.getValue().toString()), Integer.parseInt(jSpinnerG.getValue().toString()), Integer.parseInt(jSpinnerB.getValue().toString()));
+ updateSelectedColor(clr);
+ }
+ });
+ }
+ return jSpinnerB;
+ }
+}
\ No newline at end of file
変更後のファイル
| リンク先は |
 |
リポジトリ上のURLです |