【发布时间】:2014-10-10 20:31:01
【问题描述】:
这是针对学校的一个项目,我有两个不同的问题想请教。以下是老师的要求:
“使用 Java 集合来存储成对的唯一颜色及其唯一的十六进制值。最多可以存储 20 个这样的对。然后编写一个 GUI,使用单选按钮选择一个值来显示颜色和/或十六进制值。选择时GUI 的背景应更改为该颜色。”
我读到这意味着将它们成对存储然后制作一个使用 JRadioButtons 更改背景颜色的 GUI。
我已经完成并且工作正常。我的问题是我真的觉得应该有一种更有效的方法来从treeMap制作jrb。我正在考虑调用下一组来填充 jrb,类似于使用数组。
第二部分是颜色本身。我在 netbeans 中只看到有限数量的颜色(即没有紫色!)如何才能将这些颜色包含在此项目中以确保准确性?
不确定,但非常感谢任何建议。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public final class FinalProject extends JFrame {
private static final int FRAME_WIDTH = 700;
private static final int FRAME_HEIGHT = 800;
private JRadioButton redButton;
private JRadioButton greenButton;
private JRadioButton blueButton;
private JRadioButton aquaButton;
private JRadioButton grayButton;
private JRadioButton fuchsiaButton;
private JRadioButton blackButton;
private JRadioButton limeButton;
private JRadioButton silverButton;
private JRadioButton maroonButton;
private JRadioButton navyButton;
private JRadioButton oliveButton;
private JRadioButton purpleButton;
private JRadioButton tealButton;
private JRadioButton yellowButton;
private JRadioButton cyanButton;
private JRadioButton orangeButton;
private JRadioButton tanButton;
private JRadioButton lavanderButton;
private JRadioButton plumButton;
private ActionListener listener;
public FinalProject()
{
TreeMap<String,String> colorselect = new TreeMap<String,String>();
colorselect.put("00FFFF","Aqua");
colorselect.put("008000","green");
colorselect.put("808080","gray");
colorselect.put("ff00ff","fuchaia");
colorselect.put("0000ff","blue");
colorselect.put("000000","black");
colorselect.put("00ff00","lime");
colorselect.put("c0c0c0","silver");
colorselect.put("800000","Maroon");
colorselect.put("000080","olive");
colorselect.put("ff0000","red");
colorselect.put("800080","purple");
colorselect.put("008080","teal");
colorselect.put("ffff00","yellow");
colorselect.put("00ffff","cyan");
colorselect.put("ffa500","orange");
colorselect.put("d2b4bc","tan");
colorselect.put("e6e6fa","lavander");
colorselect.put("dda0dd","plum");
// This listener is shared among all components
class ChoiceListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent event)
{
setColor();
}
}
listener = new ChoiceListener();
createControlPanel();
setSize(FRAME_WIDTH, FRAME_HEIGHT);
}
public void createControlPanel()
{
JPanel styleGroupPanel = createRadioButtons();
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new GridLayout());
controlPanel.add(styleGroupPanel);
add(controlPanel, BorderLayout.NORTH);
}
public JPanel createRadioButtons()
{
redButton = new JRadioButton("Red");
redButton.addActionListener(listener);
greenButton = new JRadioButton("Green");
greenButton.addActionListener(listener);
aquaButton = new JRadioButton("aqua");
aquaButton.addActionListener(listener);
grayButton = new JRadioButton("gray");
grayButton.addActionListener(listener);
fuchsiaButton = new JRadioButton("fuchsia");
fuchsiaButton.addActionListener(listener);
blackButton = new JRadioButton("black");
blackButton.addActionListener(listener);
limeButton = new JRadioButton("lime");
limeButton.addActionListener(listener);
silverButton = new JRadioButton("silver");
silverButton.addActionListener(listener);
maroonButton = new JRadioButton("maroon");
maroonButton.addActionListener(listener);
navyButton = new JRadioButton("navy");
navyButton.addActionListener(listener);
oliveButton = new JRadioButton("olive");
oliveButton.addActionListener(listener);
purpleButton = new JRadioButton("purple");
purpleButton.addActionListener(listener);
tealButton = new JRadioButton("teal");
tealButton.addActionListener(listener);
yellowButton = new JRadioButton("yellow");
yellowButton.addActionListener(listener);
cyanButton = new JRadioButton("cyan");
cyanButton.addActionListener(listener);
orangeButton = new JRadioButton("orange");
orangeButton.addActionListener(listener);
tanButton = new JRadioButton("tan");
tanButton.addActionListener(listener);
lavanderButton = new JRadioButton("lavander");
lavanderButton.addActionListener(listener);
plumButton = new JRadioButton("plum");
plumButton.addActionListener(listener);
blueButton = new JRadioButton("Blue");
blueButton.addActionListener(listener);
blueButton.setSelected(true);
getContentPane().setBackground(Color.BLUE);
ButtonGroup group = new ButtonGroup();
group.add(redButton);
group.add(greenButton);
group.add(blueButton);
group.add(plumButton);
group.add(aquaButton);
group.add(grayButton);
group.add(fuchsiaButton);
group.add(blackButton);
group.add(limeButton);
group.add(silverButton);
group.add(maroonButton);
group.add(navyButton);
group.add(oliveButton);
group.add(purpleButton);
group.add(tealButton);
group.add(yellowButton);
group.add(cyanButton);
group.add(orangeButton);
group.add(tanButton);
group.add(lavanderButton);
JPanel panel = new JPanel();
panel.add(redButton);
panel.add(greenButton);
panel.add(blueButton);
panel.add(aquaButton);
panel.add(grayButton);
panel.add(fuchsiaButton);
panel.add(blackButton);
panel.add(limeButton);
panel.add(silverButton);
panel.add(maroonButton);
panel.add(navyButton);
panel.add(oliveButton);
panel.add(purpleButton);
panel.add(tealButton);
panel.add(yellowButton);
panel.add(cyanButton);
panel.add(orangeButton);
panel.add(tanButton);
panel.add(lavanderButton);
panel.add(plumButton);
panel.setPreferredSize(new Dimension(100,200));
return panel;
}
public void setColor()
{
if(redButton.isSelected())
{
getContentPane().setBackground(Color.RED);
}
if(greenButton.isSelected())
{
getContentPane().setBackground(Color.GREEN);
}
if(blueButton.isSelected())
{
getContentPane().setBackground(Color.BLUE);
}
if(aquaButton.isSelected())
{
getContentPane().setBackground(Color.GREEN);
}
if(grayButton.isSelected())
{
getContentPane().setBackground(Color.GRAY);
}
if(fuchsiaButton.isSelected())
{
getContentPane().setBackground(Color.PINK);
}
if(blackButton.isSelected())
{
getContentPane().setBackground(Color.BLACK);
}
if(limeButton.isSelected())
{
getContentPane().setBackground(Color.green);
}
if(silverButton.isSelected())
{
getContentPane().setBackground(Color.LIGHT_GRAY);
}
if(maroonButton.isSelected())
{
getContentPane().setBackground(Color.RED);
}
if(navyButton.isSelected())
{
getContentPane().setBackground(Color.BLUE);
}
if(oliveButton.isSelected())
{
getContentPane().setBackground(Color.green);
}
if(purpleButton.isSelected())
{
getContentPane().setBackground(Color.MAGENTA);
}
if(tealButton.isSelected())
{
getContentPane().setBackground(Color.BLUE);
}
if(yellowButton.isSelected())
{
getContentPane().setBackground(Color.YELLOW);
}
if(cyanButton.isSelected())
{
getContentPane().setBackground(Color.CYAN);
}
if(orangeButton.isSelected())
{
getContentPane().setBackground(Color.ORANGE);
}
if(tanButton.isSelected())
{
getContentPane().setBackground(Color.darkGray);
}
if(lavanderButton.isSelected())
{
getContentPane().setBackground(Color.MAGENTA);
}
if(plumButton.isSelected())
{
getContentPane().setBackground(Color.MAGENTA);
}
}
}
【问题讨论】:
-
您可以使用 Map.keySet 返回一组键,然后您可以在 for 循环中迭代此 Set,使用当前键从 Map 中提取值。然后,您将基于这些值构建一个新的 JRadioButton。如果您需要访问 JRadioButton,您可以将它们放在一个数组或列表中。至于颜色,请尝试在互联网上查找网络颜色
标签: java user-interface collections map colors