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

Java Accessing Hexadecimal Text Files For HashMaping

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

//输入File.txt

红色 FF0000

蓝色 000084

绿色 00FF00

黄色 FFFF00

橙色 FF8C00

粉色 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);
}
}

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

public class FP 扩展 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);
    }
}