0

それの何が問題なのですか?d = 30 で色を適用すると、d = 0 の場合よりも明るくなると思っていましたが、そうではありません。ここで、パネルごとに色が変わるはずです(私は予想していました)。

package default;

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class test
{
    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);
        frame.setMinimumSize(new Dimension(600,100));
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));

        for(int i = 100; i > 0; i = i-10)
        {
            JPanel p = new JPanel();
            p.setPreferredSize(new Dimension(20,20));
            p.add(new JLabel(String.valueOf(i)));
            Double d = Double.valueOf(i);

            Color color = Color.red.brighter();
            while(d > 0)
            {
                color = color.brighter();
                d = d-5;
            }

            p.setBackground(color);
            panel.add(p);
        }

        frame.setVisible(true);
    }
}
4

1 に答える 1

4

Java のbrighter()カラー アルゴリズムは、R、G、または B が 0 で始まる場合、0 のままであると想定しています。

import java.awt.Color;

public class QuickTest {

    public static void brighten(Color color, int d) {
        System.out.println("brighten");
        while(d > 0)
        {
            System.out.println(color);
            color = color.brighter();
            d = d-1;
        }
        System.out.println(color);
    }

    public static void main(String[] args) throws Exception {
        int d = 3;
        brighten(Color.red,3);
        brighten(new Color(45,125,0),3);
        brighten(new Color(45,125,1),3);
    }
}

出力

brighten
java.awt.Color[r=255,g=0,b=0]
java.awt.Color[r=255,g=0,b=0]
java.awt.Color[r=255,g=0,b=0]
java.awt.Color[r=255,g=0,b=0]
brighten
java.awt.Color[r=45,g=125,b=0]
java.awt.Color[r=64,g=178,b=0]
java.awt.Color[r=91,g=254,b=0]
java.awt.Color[r=130,g=255,b=0]
brighten
java.awt.Color[r=45,g=125,b=1]
java.awt.Color[r=64,g=178,b=4]
java.awt.Color[r=91,g=254,b=5]
java.awt.Color[r=130,g=255,b=7]

アップデート

しかしいつもではない..

brighten(new Color(0,0,0),3);

..生産物:

brighten
java.awt.Color[r=0,g=0,b=0]
java.awt.Color[r=3,g=3,b=3]
java.awt.Color[r=4,g=4,b=4]
java.awt.Color[r=5,g=5,b=5]
于 2012-08-27T16:06:07.527 に答える