Tag: actionlistener

为什么线程在我的actionListener实现中冻结了我的代码?

我试图通过按下按钮(向上,向下,……)顺利地制作一个椭圆形移动,我尝试使用线程与try并在课堂内捕捉它的工作但是当我在这里使用它时会冻结整个应用程序。 class movingdown implements ActionListener{ @Override public void actionPerformed(ActionEvent e){ for (int i = 0; i < frame.getWidth(); i++) { x++; frame.repaint(); try{Thread.sleep(50);}catch(Exception ex){} } } }//movingdown end 这是我的整个代码: package swingWork; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class movingball { JFrame frame; int x=0; int y […]

Java – 使用Timer时出错

所以我用谷歌搜索了几分钟如何使用计时器,并在这里找到一些有用的线程。 但是当我想使用建议的代码时,Eclipse向我显示总是一个错误。 int delay = 1000; //milliseconds ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { label.setVisible(false); } }; new Timer(delay, taskPerformer).start(); 这是我现在想要使用的代码。 Eclipse强调最后一行,当他们建议“删除匹配’Timer()’”的参数时。 此外,它强调start()并希望它被转换。 :S 有人可以帮我吗? 我安装了最后一个Java版本^^ 多谢。

ActionListener未实现

JFrameWithPanel不是抽象的,并且不会覆盖java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.ActionEvent)公共类JFrameWithPanel extends JFrame实现ActionListener 我没有得到这个代码。 Book和Java站点告诉我这是该方法的语法,但这个错误再次出现。 import javax.swing.*; import javax.swing.JOptionPane; import java.awt.*; import java.awt.event.*; import java.lang.Math.*; import java.lang.Integer.*; import java.util.*; import java.util.Random; import java.io.*; import java.text.*; import java.text.DecimalFormat.*; public class JFrameWithPanel extends JFrame implements ActionListener { JButton button = new JButton(“Exit”); public JFrameWithPanel() { super(“JFrame with Panel”); JComboBox packageChoice = new JComboBox(); packageChoice.addItem(“A+ Certification”); packageChoice.addItem(“Network+ Certification […]

循环内的监听器不允许更改局外布尔标志

在我之前的post之后,我写了一个听众: @Override public void keyTyped(KeyEvent keyEvent) { PolygonFiller polyFiller = new PolygonFiller(); char key = keyEvent.getKeyChar(); final boolean runForever = true; switch(key) { /** * Fill the polygons */ case FILL_POLYGON: { if (greenLightForFilling == true) { while (runForever) { fillPolygon(polyFiller); KeyListener listener = new KeyListener() { public void keyPressed(KeyEvent keyEvent) { char keyOther = […]

Addactionlistener不接受参数

import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class Concentration extends JFrame implements ActionListener { private JButton buttons[][]=new JButton[4][4]; int i,j,n; public Concentration() { super (“Concentration”); JFrame frame=new JFrame(); setSize(1000,1000); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel=new JPanel(new GridLayout(4,4)); panel.setSize(400, 400); for( i=0; i<buttons.length; i++){ for (j=0; j<buttons[i].length;j++){ n=i*buttons.length+buttons[i].length; buttons[i][j]=new JButton(); panel.add(buttons[i][j]); buttons[i][j].addActionListener(this); } } add(panel); pack(); setVisible(true); […]

将JFrame与连续输入流一起使用

我正在尝试实现从我的redboard的串口读取的代码,并根据它读取的内容重新绘制一个圆圈。 这样做的最终目的是使用Robot类来实现实际的光标控制,但我首先想要了解更多有关Java的信息,因此我首先尝试使用一些基本图形来实现它。 总结一下我的问题,我不知道如何使用静态方法不断变化的输入来使用JFrame。 访问JAR的串口可以在http://fazecast.github.io/jSerialComm/找到 Arduino以“UpLeft”,“Up”,“UpRight”,“Left”,“Center”,“Right”,“DownLeft”,“Down”,“Down”,“Up”等forms连续写入基于FPGA加速度计系统的序列。彻头彻尾”。 然后Java程序应该抓住它并相应地重新绘制一个圆圈。 我能够打开COMM3并打印从我的硬件收到的正确方向,但每当我尝试应用JFrame时,我都会迷路。 我发现了很多ActionListener教程,但是这个实现应该是连续的,不依赖于鼠标或键盘事件。 因此,我不知道如何使用paintComponent()和painter()方法,因为main方法是静态的。 非常感谢您的宝贵时间! import java.awt.Color; import java.awt.Graphics; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JSlider; import com.fazecast.jSerialComm.*; public class Main extends JPanel{ public void paintComponent(Graphics g, int x, int y) { super.paintComponent(g); g.setColor(Color.MAGENTA); g.fillOval(x, y, 20, 20); } public void painter(int x, int y, int velx, int vely){ […]

如何将动作侦听器设置为3个按钮

我正在尝试制作带有三个按钮的秒表,“开始”,“暂停”和“停止”。 我的讲师只教我们如何将动作监听器设置为两个按钮。 如何将动作侦听器设置为三个按钮? 到目前为止,这是我的编码 JButton startButton = new JButton(“Start”); JButton stopButton = new JButton(“Stop”); JButton pauseButton = new JButton(“Pause”); startButton.addActionListener(this); stopButton.addActionListener(this); public void actionPerformed(ActionEvent actionEvent) { Calendar aCalendar = Calendar.getInstance(); if (actionEvent.getActionCommand().equals(“Start”)){ start = aCalendar.getTimeInMillis(); aJLabel.setText(“Stopwatch is running…”); } else { aJLabel.setText(“Elapsed time is: ” + (double) (aCalendar.getTimeInMillis() – start) / 1000 ); } } […]

单击JMenuItem时执行操作?

所以我在框架的顶部创建了一个带有基本菜单的简单程序,现在我只需要在每个JMenuItem后面放置动作。 我努力工作代码,这是我认为可行的: JMenu file_Menu = new JMenu(“File”); JMenuItem fileExit = new JMenuItem(“Exit Program”); file_Menu.add(fileExit); fileExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JFrame hello = new JFrame(“POPUP”); hello.setSize(100,75); hello.setDefaultCloseOperation(hello.EXIT_ON_CLOSE); hello.setVisible(true); } }); main_Menu.add(file_Menu); 这似乎不起作用,我认为这个代码会在单击菜单项时创建一个小的弹出窗口。 可以发现任何错误,因为我似乎无法。

如何在Java中正确处理定时器?

我希望我的计时器在5秒时间内只执行一次actionPerformed方法,但它在控制台“Hello”中写了很多次: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; public class X{ public static void main(String args[]) { ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { System.out.println( “Hello” ); } }; Timer timer = new Timer( 5000, actionListener ); timer.start(); } } 我怎样才能达到我想要的效果? 谢谢

使用JButton将文本添加到两个文本字段

如果我的问题不是很具体,那么我正在努力做到这一点。 我有一个计算器,有两个JTextFields,一个JLabel(“Answer =”)和一个JTextField作为答案。 我有一个JButtons(0到9)数组,允许用户点击它们将数字添加到JTextField,光标在其中激活…这是问题所在。 我只能将两个文本字段中的一个添加到它们中,或者两者都添加相同的数字。 例如,如果我单击一个按钮并且addActionListener设置为(new AddDigitsONE) ,它将只允许我向第一个JTextField添加数字。 即使在我尝试将光标设置为第二个JTextField并使用JButtons为其添加数字之后,它也会跳回到第一个JTextField。 用于将JButtons数组添加到JFrame中的JPanel的代码 // input is my JPanel set to BorderLayout.SOUTH for (int i = 0; i < button.length; i++) { text = Integer.toString(i); button[i] = new JButton(); button[i].setText(text); input.add(button[i]); button[i].addActionListener(new AddDigitsONE()); } 我的动作监听器的代码:第一个JTextField // firstNumber is my first JTextField // command is the button pressed (0-9) // […]