【问题标题】:JButtons in GUIGUI 中的 JButton
【发布时间】:2014-02-21 14:36:46
【问题描述】:

我是 GUI 的初学者。

有没有一种快速的方法可以将相同的 JButton/Image 设置到 GUI 中的多个位置?为了更好地说明,如果我想在我的 GUI 的不同位置使用这个 JButton 10 次,我是否必须创建一个新的 JButton(new ImageIcon...) 10 次?

按钮不必指向任何东西,这只是为了展示。

JButton jb = new JButton(new ImageIcon("myImage.png"));
jb.setLocation(10,10);
jb.setSize(40, 40);
getContentPane().add(jb);

【问题讨论】:

    标签: java swing user-interface jbutton


    【解决方案1】:

    简短的回答是,是的,您将需要多个 JButton 实例。

    您可以使用Action,它可以应用于按钮的多个实例(Action 的同一实例)。 Action 类带有用于配置按钮的属性,例如文本和图标属性。

    一个组件(如JButton)只能驻留在一个容器中,因此,您将需要JButton 的多个实例。

    查看How to Use ActionsHow to Use Buttons, Check Boxes, and Radio Buttons 了解更多详情...

    一般来说,您应该避免使用 setLocationsetSize 并更多地依赖布局管理器的使用,但是您没有提供足够的上下文来说明这对您是否有用。

    【讨论】:

    • 谢谢老板,非常感谢
    • 这只是一种方法,可能值得尝试其他一些建议,并看看它们对您自己的体验有何不同;)
    【解决方案2】:

    是的,您需要为每个所需的实例创建一个 Jbutton 对象。

    【讨论】:

      【解决方案3】:

      既然你有很多相似的JButton,我建议你声明一个数组JButton[] buttons = new JButton[10];并使用for循环来创建每个单独的按钮并设置它们的属性。

      【讨论】:

        【解决方案4】:

        如果只是为了表演,我会做下面的事情来连续显示10个按钮:

        int buttonHeight = 10;
        int buttonWidth = 10;
        for (int i = 0; i < 10; i++) {
            JButton button = new Button("Button " + i);
            button.setSize(buttonWidth, buttonHeight);
            button.setLocation(10 + i * buttonWidth, 10);
            getContentPane().add(button);
        }
        

        【讨论】:

          【解决方案5】:
           import java.util.Scanner;
           import javax.swing.*;
           import java.awt.*;
          
           class PROB4_CHAL1 extends JFrame 
           {
              JButton b[]=new JButton[10];
                  public PROB4_CHAL1()
                  {
                      setLayout(null);
                      setVisible(true);
                      setSize(100,100);
                    for(int i=0;i<10;i++)
                     {
                     b[i]=new JButton(""+i);// or b[i]=new JButton(new ImageIcon("path"));
                     b[i].setBounds(i*10,i*20,50,20);
                     add(b[i]);
                     }
          
                  }
          
                 public static void main(String[] args)
                  {
                   new PROB4_CHAL1();
                    }
             }
          

          您可以创建“JButton [10]”数组。

          【讨论】:

            猜你喜欢
            • 2012-02-07
            • 2012-07-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-23
            • 1970-01-01
            • 1970-01-01
            • 2015-06-01
            相关资源
            最近更新 更多