【问题标题】:Drawing Swing components inside a Graphics object在 Graphics 对象内绘制 Swing 组件
【发布时间】:2020-11-10 08:00:12
【问题描述】:

有什么方法可以让 Java 图形对象 (g) 绘制一个摆动组件? 像一个按钮或 JLabel

类似 g.drawJLabel 的东西?

我正在尝试在我的图形对象中添加可点击的文本(链接),但无法向图形对象添加鼠标侦听器

【问题讨论】:

  • 是的,你可以绘制一个 Swing 组件(这是渲染器为 JTable 和 JList 等工作的方式),但它只会绘制组件的图像,它是不可点击的。如果你想要一个可点击的组件,那就使用一个真正的组件并将它添加到面板中。
  • 问题是如果我添加一个真正的组件,它不会显示在我想要渲染它的对象内,有什么建议吗?
  • 您遇到了编码问题。发布您的minimal reproducible example 来证明问题。

标签: java swing user-interface graphics jframe


【解决方案1】:

您的可点击文本可以是带有 mouselistener 的 JLabel

 JLabel hyperlink=new JLabel("Click me");

 hyperlink.addMouseListener(new MouseAdapter()
{
 @Override
 public void mouseEntered(MouseEvent m)
 {
  hyperlink.setForeground(Color.blue);
 }

 @Override
 public void mouseExited(MouseEvent m)
{
 hyperlink.setForeground(Color.black);
}

 @Override
  public void mouseClicked(MouseEvent m)
  {
    if (Desktop.isDesktopSupported() && 
    Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
    Desktop.getDesktop().browse(new URI(hyperlink.getText())));
    }
   }

确保您的图形对象具有某种形式的布局管理器,否则您的文本将不会显示

然后在您的图形对象中,我假设它们都扩展了某种形式的 JComponent,您可以将此文本添加到您的对象中,您的文本仍将接收用户输入

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2013-01-28
    • 2012-06-19
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    相关资源
    最近更新 更多