Java访问HashMaping的十六进制文本文件

时间:2015-02-28 01:27:58

标签: java iterator hashmap hex bufferedreader

我正在制作GUI,我必须制作按钮和背景更改。该程序使用的是Java Collection Framework,我选择了Hashmap。我真的很难理解,尝试做的是访问一个txt文件然后读取对并将它们存储在hashmap中。 txt文件包含对颜色 - 单独行上的十六进制值,它们将按十六进制值的递增顺序对对进行排序,并使用迭代器将已排序的对显示到控制台。我尝试了一个BufferReader,但遇到了错误,但我猜这不是用于地图的最佳方式。

//输入File.txt

红色FF0000

蓝色000084

绿色00FF00

黄色FFFF00

橙色FF8C00

Pink FFC0CB

灰色D3D3D3

布朗964B00

紫色800080

黑色000000

深绿色013220

深红色8B0000

深蓝色00008B

深橙色D97700

深灰色363737

深紫色471E8A

深黄色7f7f00

淡黄色FFFFCC

浅蓝色C0D9D9

浅紫D8BFD8

以下是我已经开始并最终为GUI工作的代码。

public class FP extends JFrame implements ActionListener {

BufferedReader reader = new BufferedReader(new FileReader(new File("Input File.txt")));
private Map<String, String> buttonColors;

// Constructor
public FP() {

    super("ColorMap");
    buttonColors = new HashMap<String, String>();

    //test button
    buttonColors.put("Red", "FF0000");

    setSize(400, 400);
    setLayout(new FlowLayout());
    ButtonGroup buttonGroup = new ButtonGroup();

    for (Map.Entry<String, String> coloringButtons : buttonColors
            .entrySet()) {

        JRadioButton button = new JRadioButton(coloringButtons.getKey());

        button.setActionCommand(coloringButtons.getValue());
        button.addActionListener(this);

        // Add this new color-button to the button group
        buttonGroup.add(button);
        add(button);
    }
}

@Override
public void actionPerformed(ActionEvent e) {

    String color = e.getActionCommand();
    getContentPane().setBackground(new Color(Integer.parseInt(color, 16)));

}

public static void main(String[] args) {

    FP obj = new FP();
    obj.setVisible(true);
}
}

1 个答案:

答案 0 :(得分:0)

这里是你的代码被修改为读取文件并填充HashMap,在这种情况下我使用TreeMap按顺序对十六进制字段进行排序,看看这是否适合你,

public class FP extends JFrame实现了ActionListener {

private TreeMap<String, String> buttonColors;

// Constructor
public FP() {

    super("ColorMap");
    buttonColors = new TreeMap<String, String>();

    BufferedReader br = new BufferedReader(new FileReader("InputFile.txt");
    while(true)
    {
      String str = br.readLine();
      if(str==null)break;
      if(str.length()==0)continue;
      string[] st = str.split(" ");
      string colorName = st[0].trim();
      string colorValue = st[1].trim();

      //* to have the colors sorted by the hex value
      buttonColors.put(colorValue, colorName);
    }
    br.close();

    //test button
    //buttonColors.put("Red", "FF0000");

    setSize(400, 400);
    setLayout(new FlowLayout());
    ButtonGroup buttonGroup = new ButtonGroup();

    for (Map.Entry<String, String> coloringButtons : buttonColors
            .entrySet()) {

        JRadioButton button = new JRadioButton(coloringButtons.getValue());

        button.setActionCommand(coloringButtons.getKey());
        button.addActionListener(this);

        // Add this new color-button to the button group
        buttonGroup.add(button);
        add(button);
    }
}