当前位置: 首页 > 知识库问答 >
问题:

如何将actionlistenerand actioncommand放入多个JButton

马丰
2023-03-14

所以我希望我的按钮被标记为1-9,但我不想列出每个按钮的所有操作侦听器和操作命令。我怎么做

而且我也不能使用add。ActionListener(这个)那么我可以使用什么

    JButton[] button = new JButton[9];
    panel.setLayout(new GridLayout(3,3));
    for (int i = 0; i < button.length; i++) {
        button[i] = new JButton();
        panel.add(button[i]);
        String bu = Integer.toString(i);
        button[i].setActionCommand(bu);
        button[i].addActionListener(new ActionListener());

抱歉,我是java秋千的新手,所以它仍然有点混乱

共有3个答案

宗乐池
2023-03-14

您必须实现actionListener

公共类Butt实现ActionListener{

public JPanel method()
{

JPanel panel = new JPanel();
JButton[] button = new JButton[9];
panel.setLayout(new GridLayout(3, 3));
for (int i = 0; i < button.length; i++)
{
    button[i] = new JButton(""+i);
    panel.add(button[i]);
    String bu = Integer.toString(i);
    button[i].setActionCommand(bu);
    button[i].addActionListener(this);

}
return panel;
}

@Override
public void actionPerformed(ActionEvent e)
{

}

public static void main(String[] args)
{

JFrame frame = new JFrame();
frame.add(new Butt().method());
frame.setVisible(true);
frame.setSize(500, 500);
}

}现在看到没有错误。

后果

戚宏浚
2023-03-14

只需添加执行的主要操作方法。

示例如下:

public void actionPerformed(ActionEvent e){
       // your todo code here
}

确保导入适当的软件包。

养翔
2023-03-14

我不能使用add。ActionListener(这个)那么我能用什么呢

您创建一个实现ActionListener的类。

或者更好地创建一个实现动作的类。动作与ActionListener相同。好处是动作可以与键绑定一起使用。

以下是一个基本示例:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class CalculatorPanel extends JPanel
{
    private JTextField display;

    public CalculatorPanel()
    {
        Action numberAction = new AbstractAction()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
//              display.setCaretPosition( display.getDocument().getLength() );
                display.replaceSelection(e.getActionCommand());
            }
        };

        setLayout( new BorderLayout() );

        display = new JTextField();
        display.setEditable( false );
        display.setHorizontalAlignment(JTextField.RIGHT);
        add(display, BorderLayout.NORTH);

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout( new GridLayout(0, 5) );
        add(buttonPanel, BorderLayout.CENTER);

        for (int i = 0; i < 10; i++)
        {
            String text = String.valueOf(i);
            JButton button = new JButton( text );
            button.addActionListener( numberAction );
            button.setBorder( new LineBorder(Color.BLACK) );
            button.setPreferredSize( new Dimension(30, 30) );
            buttonPanel.add( button );

            InputMap inputMap = button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
            inputMap.put(KeyStroke.getKeyStroke(text), text);
            inputMap.put(KeyStroke.getKeyStroke("NUMPAD" + text), text);
            button.getActionMap().put(text, numberAction);
        }
    }

    private static void createAndShowUI()
    {
        JFrame frame = new JFrame("Calculator Panel");
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.add( new CalculatorPanel() );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible(true);
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

现在,您可以单击按钮或键入数字,值将插入到文本字段中。

 类似资料:
  • 问题内容: 是否可以将多个不同的s 存储到一个中?这是结构,我想存储在中。 这是我要设置并放入其中的代码 使用此代码仅使用我在JSON object Override中设置的所有对象的最后一个值。有什么建议可以做到这一点? 问题答案: 我找到了JSON的很好链接:http : //code.google.com/p/json- simple/wiki/EncodingExamples#Exampl

  • 问题内容: 我有一个具有2个子文件夹$ / Repo / project和$ / Repo / thirdparty的仓库。我需要将这两个都放入Jenkins中以进行单个构建。自然地,我尝试仅拉$ / Repo,但这给了我许多其他项目以及错误的民意测验(每次将任何东西检入$ / Repo时都会构建)。我试过使用可以工作的multi- scm插件,但是不保存配置(烦人,但不可用)。我尝试使用常规的t

  • 问题内容: 我已经尝试过(但无法正常工作): 问题答案: 尝试这个: 当您遇到此类问题时,一个好主意是检查浏览器是否存在JavaScript错误。不同的浏览器有不同的显示方式,但是需要一个javascript控制台或类似的东西。另外,检查浏览器查看的页面源。 有时,初学者对字符串中的引号感到困惑:在PHP部分中,您分配给。这将字符串值放入该变量内,但该值中没有引号:它们仅用于解释器,因此他知道:

  • 如何获取多个列表并将它们作为不同的列放在python数据框架中?我尝试了这个解决方案,但遇到了一些麻烦。 尝试1: 有三个列表,将它们压缩在一起,并使用 只生成一列 尝试2: 产生一行乘三列(如上所述)或者如果我转置它是三行和一列 如何通过3列(三个列表)数据帧获得100行(每个独立列表的长度)?

  • 我有一个名为LoginFrame的类,它必须显示一个包含登录表单的JFrame对象: abstrac类SingleFrameApplication自动为我提供JFrame对象,我在该对象上设置了一些属性(维度和标题)。 然后尝试添加两个JLabel对象,分别显示字符串“username:”和“password:** TNX 安德里亚

  • 但是大多数投票解决方案的问题是,它调用的所有项,因此,例如,如果它是一个无休止的RecycerView,当用户到达列表的末尾时,您希望发出网络请求,那么使用该解决方案,会重复调用server,因为它会自动到达的最后一项。 不管怎样,如何设置参数以便我可以将放入中(实际上,我希望将像framelayout或RelationVelayout这样的viewgroup作为nestedscrollview的