Java中颜色计算器的帮助
我想知道如何根据用户输入的十六进制值的颜色绘制背景。我有这个:Java中颜色计算器的帮助,java,colors,hex,Java,Colors,Hex,我想知道如何根据用户输入的十六进制值的颜色绘制背景。我有这个: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class SimpleColorCalc extends JFrame implements Runnable { ColorPanel cp; JButton show; JTextField hexCode; public SimpleColorCalc()
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class SimpleColorCalc extends JFrame implements Runnable
{
ColorPanel cp;
JButton show;
JTextField hexCode;
public SimpleColorCalc()
{
super("Simple Color Calculator");
cp = new ColorPanel();
show = new JButton("Show the Color");
hexCode = new JTextField("ffffff");
show.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
String text = hexCode.getText();
try
{
int colorCode = Integer.parseInt(text, 16);
Color enteredColor = new Color(colorCode);
cp.setColor(enteredColor);
}
catch(NumberFormatException ex)
{
hexCode.setText("ffffff");
cp.setColor(Color.white);
}
finally
{
repaint();
}
}
});
}
public static void main(String[] args)
{
SimpleColorCalc scc = new SimpleColorCalc();
javax.swing.SwingUtilities.invokeLater(scc);
}
public void run()
{
setSize(400,300);
Container c = getContentPane();
JPanel top = new JPanel();
c.add(BorderLayout.NORTH, top);
top.setLayout(new GridLayout(1,2));
top.add(show);
top.add(hexCode);
setVisible(true);
}
}
但我想知道如何修复它,以便在用户决定是否在十六进制代码前面加上0x时,它将起作用。我还想知道如何在java中将十六进制代码转换成颜色。我在这方面遇到了问题。嗯,将十六进制字符串转换为颜色:
Color myColor = Color.decode("0xFF0000");
或者你可以:
Color myColor2 = new Color(0xFF0000);
但是输入不能是字符串,否则会出现NumberFormatException
确定输入是否以0x开头应该很容易此JUnit测试可以帮助您理解:
@Test
public void test1() {
Integer hexInt = Integer.parseInt("FF0000", 16);
Color createdColor = new Color(hexInt);
assertEquals(Color.RED, createdColor);
}
您可以使用Integer.parseInt
将十六进制字符串转换为以16为基数的数字。注意:如果字符串无效(包含数字或a-f以外的字符),则会引发异常
然后可以使用整数创建Color
实例
我已经包括了一个断言,以表明创建的是我们所期望的。Woops。。。打错了,我会改正的