是否有任何具有通知计数的标准Java组件

是否有任何具有通知计数的标准Java组件,java,swing,Java,Swing,我想知道是否有一个标准的Java组件(Icon或JLabel)能够像下面的示例那样显示通知计数。我不是在做Android开发。我只想在Java桌面客户端应用程序中展示类似的东西 JLabel子类中的以下代码将得到相同的结果,但我对标准解决方案更感兴趣。它会自动导出正确的字体大小并自动调整为可见空间 public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)

我想知道是否有一个标准的Java组件(Icon或JLabel)能够像下面的示例那样显示通知计数。我不是在做Android开发。我只想在Java桌面客户端应用程序中展示类似的东西

JLabel子类中的以下代码将得到相同的结果,但我对标准解决方案更感兴趣。它会自动导出正确的字体大小并自动调整为可见空间

public void paintComponent(Graphics g)
{
  super.paintComponent(g);
  Graphics2D g2d = (Graphics2D) g;
  int w = getWidth();
  Font orgFont = g.getFont();
  Font deriveFont = orgFont.deriveFont(8.5f);
  g2d.setPaint(Color.RED);
  g2d.fillOval(w - 12, 0, 12, 12);
  g2d.setPaint(Color.BLACK);
  g2d.setFont(deriveFont);
  g2d.drawString("99", w-10, 10);
  g2d.setFont(orgFont);
}
如果有标准Java组件(图标或JLabel)

没有,没有标准组件

您可以:

  • 使用。它允许您将多个图标组合成一个图标

  • 将带有通知图标的第二个JLabel添加到第一个JLabel。默认情况下,JLabel没有布局管理器,但没有理由不使用布局管理器

  • 例如,要在右上角添加标签,可以执行以下操作:

    JLabel main = new JLabel(…);
    main.setLayout( new FlowLayout(FlowLayout.FlowLayout.RIGHT, 5, 5) );
    
    JLabel notify = new JLabel(…);
    main.add( notify );
    

    没有,什么都没有。它是在这些东西远离标准的时候开发的,并且大部分都有更通用的组件(可能保存一个文件/颜色选择器)。你们需要找一个外部的库,或者做你们自己的装饰器。也许类是合适的?好主意。我要试一试。