我正在培训gui,并且面临字符串格式问题。不知道如何以用户可读的格式显示列表中的颜色?
public static void main(String[] args) {
JFrame jframe = getFrame();
jframe.setTitle("Background color");
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension dimension = toolkit.getScreenSize();
jframe.setBounds(dimension.width/2-250, dimension.height/2-150, 500, 300);
JPanel jpanel = new JPanel();
JButton setColor = new JButton("Set Color");
Color colors[] = {Color.red, Color.green, Color.blue, Color.black};
JComboBox<Color> selector = new JComboBox<>(colors);
setColor.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jpanel.setBackground((Color)selector.getSelectedItem());
}
});
jpanel.add(selector);
jpanel.add(setColor);
jframe.add(jpanel);
}
public static JFrame getFrame() {
JFrame jframe = new JFrame();
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
return jframe;
}
}
这里是我的输出:
因此,我希望显示颜色的名称,而不是java.awt.color[…]
提前谢谢!
1条答案
按热度按时间but5z9lq1#
默认情况下,
JComboBox
显示由返回的值toString
方法的列表中的对象。自从你JComboBox
包含Color
对象,则可以看到方法返回的值toString
一流的java.awt.Color
.如果要显示颜色名称,则需要创建一个自定义类,该类将颜色名称存储为
String
和Color
对象然后,您需要覆盖toString
方法只返回颜色的名称。在下面的代码中,自定义类被命名为NamedColor
.关于上述代码的注解。
这个
ActionListener
接口是使用lambda表达式实现的您应该调用方法
setVisible
,当然JFrame
仅在添加所有组件之后。