【问题标题】:Rounded popup for JComboboxJCombobox 的圆形弹出窗口
【发布时间】:2012-10-29 01:55:27
【问题描述】:

我将 nimbus 用作 L&F,但我真的很喜欢像 seaglass L&F 这样的圆形组合框下拉菜单。见下图。

雨云

海玻璃

我怎样才能达到这种效果?覆盖油漆在这里有用吗?方法是什么?

【问题讨论】:

  • 不,覆盖绘制没有帮助,您需要提供一个能够提供所需支持的新 UI 委托。如果可以的话,我首先要看看 sea glass 的源代码,看看你是否找到了它们是如何实现它的 - 恕我直言
  • @MadProgrammer 是的。我一开始就试图看看他们在 seaglass 中做了什么。但并没有得到多少。我将检查 UI 委托。如果你也能告诉我一个好的来源,我将不胜感激。
  • 你可以从here下载它吗?
  • @MadProgrammer 啊.. 不,不是 seaglass 代码。我的意思是使用 JCombobox 的 UI 委托的良好源代码/示例或教程。我想看看你是否知道。
  • 用海玻璃组合框 UI 代表启动 ism 的最佳花边,它将提供一些关于他们在何处/如何创建弹出窗口的想法

标签: java swing popup jcombobox rounded-corners


【解决方案1】:

可以通过更新 UIManager 属性来自定义 Nimbus。 Example:

UIManager.put("nimbusBase", new Color(...));
UIManager.put("nimbusBlueGrey", new Color(...));
UIManager.put("control", new Color(...));

画家也可以更新。例如自定义滑块:

实际做法:

sliderDefaults.put("Slider.thumbWidth", 20);
sliderDefaults.put("Slider.thumbHeight", 20);
sliderDefaults.put("Slider:SliderThumb.backgroundPainter", new Painter() {
  public void paint(Graphics2D g, JComponent c, int w, int h) {
     g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
     g.setStroke(new BasicStroke(2f));
     g.setColor(Color.RED);
     g.fillOval(1, 1, w-3, h-3);
     g.setColor(Color.WHITE);
     g.drawOval(1, 1, w-3, h-3);
   }
});

资源:

【讨论】:

  • 感谢您的出色回答,我真的很感谢您,我对社区感到非常失望,因为没有人在这里给出答案,好吧,现在就解释一下如何在 JTextArea 的颜色,如果可以的话就试试看,否则我决定给你赏金。
  • 耐心等待,社区会让您大吃一惊。问题太多,几乎没有空闲时间。无论如何,尽量不要使用任何形式的“敲诈”。 JTextArea 是一个完全不同的问题。聪明地使用搜索——已经有大量的食谱,例如stackoverflow.com/questions/9650992/…
  • 这不是敲诈,请看我在赏金信息区写的附加请求,我不需要更改 jComboBox 和 JSlider,我需要更改 jTextArea 和 jTable,我有社区上也有这个问题,请积极,我只是想让你帮我解决这个问题,而渲染 jTable 和 jTextarea 的其他属性更容易
  • 我刚刚给了你赏金,你现在能给我答案吗。
  • 将尝试回答您的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
  • 2023-02-14
  • 1970-01-01
相关资源
最近更新 更多