2010-10-01 90 views
0

我想知道如何根據用戶輸入的十六進制值的顏色來繪製背景。我有這樣的:Java中的顏色計算器幫助

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中的顏色。我遇到了麻煩。

+0

計算器淋浴? – Seth 2010-10-01 21:00:10

+0

Woops ...輸入錯誤,我會解決這個問題 – Salazar 2010-10-01 21:02:56

回答

1

這JUnit測試可以幫助你理解:

@Test 
public void test1() { 
    Integer hexInt = Integer.parseInt("FF0000", 16); 
    Color createdColor = new Color(hexInt); 
    assertEquals(Color.RED, createdColor); 
} 

您可以使用Integer.parseInt打開十六進制字符串轉換爲基數16 。注意如果字符串無效(包含數字或af以外的字符),將會拋出異常。

Color實例可以使用Integer創建。

我已經加入了一個斷言來表明創建的是我們所期望的。

0

好了,一個十六進制的字符串轉換成顏色:

Color myColor = Color.decode("0xFF0000"); 

或者你可以這樣做:

Color myColor2 = new Color(0xFF0000); 

但輸入不能是一個字符串,否則你會得到一個NumberFormatException。

搞清楚,如果輸入與0X開始應該很容易