Tag: actionlistener

JFrame在单独的类中,ActionListener怎么样?

我正在尝试将我的Swing GUI与我的实际代码分开。 简而言之,我希望用户启动一个过程(根据用户的选择); 在这种情况下,将不再需要JFrame。 我无法弄清楚的是如何使用Main.class与GUI.class共享用户的选择。 你有什么建议吗? 这是我的代码: public class Main { public static void main(String[] args) { // Show GUI java.awt.EventQueue.invokeLater(new Runnable() { public void run() { GUI gui = new GUI(templates); gui.setVisible(true); } }); // Kick off a process based on the user’s selection } } public class GUI extends JFrame { private static […]

无法用ActionListener弄清楚错误

以下是我的计划。 目标是在用户键入数字并按下回车键后,将罗马数字转换为阿拉伯数字。 这是一项家庭作业,我们不得不使用JTextAreas代替JTextFields 。 我的错误存在于该行: enterRomanNumber.addActionListener(handler) ; 错误如下: “未定义类型JTextArea的方法addActionListener(ArabicToRomanGUI.HandlerForTextArea)” 我似乎无法弄清楚为什么我会收到此错误或如何纠正错误,有人可以提出建议。 import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.ActionEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextField; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextArea; public class ArabicToRomanGUI extends JFrame { private static final long serialVersionUID = 1L; private JTextArea enterRomanNumber = new JTextArea(); JLabel label = new […]

我如何以编程方式将ActionEvent发送到JButton?

如何以编程方式将ActionEvent (例如按下的按钮/ ACTION_PERFORMED)发送到JButton ? 我知道: button.doClick(0); 和 button.getModel().setArmed(true); button.getModel().setPressed(true); button.getModel().setPressed(false); button.getModel().setArmed(false); 但是不可能直接发送一个ActionEvent吗? 编辑:这不是生产代码,只是一个小小的个人实验。

Java swing计时器仅工作一次,然后keyEvents快速连续触发 – 按住键

所以我把它设置为KeyEvents和计时器的测试。 第一次按下右箭头键时,事件将等待5秒,就像定时器设置为,然后打印KeyPressed 。 然而,在第一次打印之后, KeyPressed将快速连续打印,就像我按下键时收集的KeyEvents的长队列一样。我不希望所有按住右箭头键的额外按键导致。 我想按住右箭头键,每5秒钟只接收一次println 。 任何帮助是极大的赞赏。 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class GameBoard extends JPanel { public Ninja ninja; public GameBoard() { addKeyListener(new TAdapter()); setFocusable(true); setBackground(Color.BLACK); setDoubleBuffered(true); ninja = new Ninja(); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.drawImage(ninja.getImage(), 20,20,null); } […]

Java:使用带箭头键的按键

我有一些我需要修改的代码。 在代码中,原作者使用KeyStroke.getKeyStroke来获取用户输入。 例如,在此代码中,他使用a是左箭头而不是左箭头。 我想改变这个,但我不知道怎么做。 这是原始代码: registerKeyboardAction( new ActionListener() { public void actionPerformed(ActionEvent e) { tick(RIGHT); } }, “right”, KeyStroke.getKeyStroke(‘d’), WHEN_IN_FOCUSED_WINDOW ); 我必须将它改为这样的东西,但是当它运行时,它不起作用: KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT); KeyStroke.getKeyStroke(“RIGHT”);

如何让多个Key Binding同时工作?

我需要设计一个有两个玩家的游戏。 每个都有一个球,应该能够向右或向左移动球,第一个玩家带有’a”d’按钮,第二个玩家有右箭头按钮。 然而,目前一名球员需要等待其他球员的动作完成才能移动他们自己的球。 我该如何解决这个问题? 这是我的代码的相关部分: public class AnimationWindow extends JPanel{ public AnimationWindow() { super(); …. …. cezmiMover(); } public void cezmiMover(){ this.getInputMap().put(KeyStroke.getKeyStroke(‘a’), “left1”); this.getActionMap().put(“left1”, new AbstractAction() { public void actionPerformed(ActionEvent e) { board.cezmi1.moveLeft(); } }); this.getInputMap().put(KeyStroke.getKeyStroke(‘d’), “right1”); this.getActionMap().put(“right1”, new AbstractAction() { public void actionPerformed(ActionEvent e) { board.cezmi1.moveRight(); } }); this.getInputMap().put(KeyStroke.getKeyStroke(“LEFT”), “left2”); this.getActionMap().put(“left2”, new AbstractAction() { […]

什么是更好用:Action vs ActionListener?

我自己,我总是使用ActionListener作为swing事件处理程序(例如按钮单击),它是我在大多数swing应用程序中看到的最常见的监听器。 但是,Stackoverflow中的一些Swing专业人员经常建议使用Action而不是ActionListener 。 这样做有什么好处?

JLabel的ActionListener

我想学习如何为JLabel编写ActionListener 。 我想制作一个标签,在用户点击标签时为用户打开一个新框架。 也许MouseListener可以工作,但我不知道如何制作它。

在Java中使用具有相同标签的多个JButton

我的项目中有两个按钮都带有“+”标签。 调用actionPerformed()方法时,它会根据标签调用特定方法。 如何在两个具有相同标签的JButton之间进行切割? 有没有更好的方法来做到这一点然后我是如何做到的? 这是按钮的定义: JButton keypadPlus1 = new JButton(” + “); JButton keypadMinus1 = new JButton(” – “); JButton keypadPlus2 = new JButton(“+”); JButton keypadMinus2 = new JButton(“-“); 为按钮添加ActionListeners: keypadPlus1.addActionListener(backEnd); keypadPlus2.addActionListener(backEnd); keypadMinus1.addActionListener(backEnd); keypadMinus2.addActionListener(backEnd); backEnd中的actionPerformed @Override: public void actionPerformed (ActionEvent event) { String command = event.getActionCommand(); if (command.equals(“+”)) { calcLifePoints(command); } if (command.equals(“-“)) { calcLifePoints(command); […]

为什么我的代码“Bouncing ball”不起作用?

我正在尝试编写一个关于弹跳球的代码,但我仍然坚持如何让球反弹。 代码似乎是正确的,没有来自eclipse的错误消息,但球不动。 任何帮助/提示都很感激。 这是我的代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class BouncingBallTest extends JFrame { private JButton jbtStart = new JButton(“Start”); private JButton jbtStop = new JButton(“Stop”); private Ball canvas = new Ball(); public BouncingBallTest() { JPanel panel = new JPanel(); // Use the panel to group buttons panel.add(jbtStart); panel.add(jbtStop); add(canvas, BorderLayout.CENTER); // Add […]