【问题标题】:Setting text in jLabel after user selectes color用户选择颜色后在 jLabel 中设置文本
【发布时间】:2016-01-12 22:21:27
【问题描述】:

我正在创建一个小应用程序,用户将通过按下按钮来选择颜色。我想当用户从JColorChooser 对话框中选择颜色并将应用程序的颜色设置为背景时,也将颜色名称放在jLabel 中。

到目前为止,我已经创建了以下代码:

private void btnChooseColorActionPerformed(java.awt.event.ActionEvent evt) {                                               
    Color color = JColorChooser.showDialog(getContentPane(), "Choose color", Color.yellow);
    this.getContentPane().setBackground(color);
    lblColorSelected.setText("Color: " + /* here I would like to append code that will display name of the color what user have selected */);
} 

我已成功创建用户从对话框中选择颜色并将颜色作为背景应用程序,但唯一的问题是我不知道如何获取用户选择的颜色的名称。你有什么想法吗?

【问题讨论】:

  • “颜色”没有“名称”,而是有属性(RGB)。您可以使用this 之类的东西来生成颜色的十六进制表示,这很常见(在网络中经常使用)
  • 感谢@MadProgrammer 的建议,但我需要在标签上显示颜色的名称。
  • 正如我所说的“颜色”没有“名称”,你能做的最好的就是以最常用的形式呈现 RGB 属性,通常是十六进制值跨度>
  • 另一种选择是从 RGB 生成一些范围并相应地显示颜色名称
  • 拥有 256 级 R、G 和 B,共有 16,777,216 种颜色。你真的希望人类用一个唯一的名字来命名它们吗?通过遵循@MadProgrammer 的建议,我们可以唯一地识别它们。除此之外,我建议向用户展示一个使用该颜色的方形标签。

标签: java swing colors


【解决方案1】:

假设可能的颜色数量有限(例如,您只允许红色、绿色和蓝色),最简单的方法可能是简单地使用 switch 语句或蛮力 if else 语句来指定名称。

String colorName = new String(); 

//My syntax may be off here but you get the idea
if Color.color.equals(c)
{
    colorName = color;
}

如果您允许选择任何颜色,那么 MadProgrammer 是对的。 This 将允许您将十六进制值显示为字符串。

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2021-08-08
    • 1970-01-01
    • 2011-05-05
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多