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);
}
}
我正在制作一个 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);
}
}