【问题标题】:Custom Button Classes in JavaJava 中的自定义按钮类
【发布时间】:2013-04-12 22:38:18
【问题描述】:

我知道我的方法不实用,但这将帮助我更多地习惯 Java。 我正在尝试创建一个 JButton 子类(名为 MyButton)。 MyButton 基本上会创建一个带有自定义图像背景的新 Gui 按钮。 我知道如何在类中创建一个新按钮,但不知道如何引用 MyButton 类创建的按钮。如代码所示,需要设置按钮的图标,但这需要在子类内部完成,所以说用过的不必用。 创建时,编码器输入引用纹理的字符串,然后 MyButton 具有 JButton 的所有属性,但也已经设置了图像。 下面是我的源代码。

package Classes;
import javax.swing.ImageIcon;
import javax.swing.JButton;

public class MyButton extends JButton{
private static final long serialVersionUID = 1L;

public JButton abc = new JButton();
private ImageIcon def;
private MyButton ghi;

public MyButton(String image){

    def = new ImageIcon(getClass().getResource(image));

    //abc.setIcon(def);
    //abc.setPressedIcon(def);

    ghi = new MyButton("image.png");
    ghi.setIcon(def);


}
}

UPADTE 解决了。谢谢山姆。 我相信“this.setIcon”有效

【问题讨论】:

  • this.setIcon(),而不是ghi.setIcon()。您已经有一个 MyButton,您不想再创建一个。
  • 你知道,我完全忘记了“这个”。
  • 谢谢,正如你所说,我正在处理代码并想到了它。傻我!

标签: java swing jbutton


【解决方案1】:

也许我误解了你,但MyButton 没有(或可能不应该)创建按钮,它按钮。 (从技术上讲,它是一种按钮。)public MyButton... 方法是MyButton 类的构造方法;它初始化一个新的 MyButton。 this 关键字将引用 MyButton 类中的按钮;在它之外,您将使用如下所示的代码:

MyButton aButton = new MyButton();

【讨论】:

    【解决方案2】:
    public class MyButton extends JButton{
    private static final long serialVersionUID = 1L;
    private ImageIcon def;
    private MyButton ghi;
    
    public MyButton(){
    def = new ImageIcon("image.png");
    super(def);
    }
    }
    

    上述类的东西。

    【讨论】:

      【解决方案3】:

      如果你扩展 JButton,那么你会得到一个新对象,它是一个按钮。
      原来的 JButton 有一个 draw 方法,它将按钮绘制到画布上。

      我认为你应该像这样覆盖按钮的 paintComponent() 方法:

      @Override
      public void paintComponent(Graphics g) {
          // g.drawImage(image) or something...
      }
      
      //  Also has a paintBorder() method
      public void paintBorder(Graphics g) {
         // Draw your border if mouse over
      }
      

      这样你就可以绘制你的初始化图像文件了。 该按钮将像普通的 JButton 一样工作,但构造函数将采用图像 url。 (你已经这样做了)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-20
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        • 2015-06-30
        • 1970-01-01
        • 2018-07-20
        • 2020-10-23
        相关资源
        最近更新 更多