作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任务是为 Belisha 信标编写代码,该信标一开始会闪烁,颜色在浅灰色和橙色之间交替,并有两个按钮:闪烁和稳定。因此,当我单击“稳定”按钮时,信标必须保持为橙色,但对于我的程序,当我单击“稳定”按钮时以及当我单击“闪光”按钮后,信标会保持稳定的颜色。按钮常亮,信标不再闪烁。到目前为止,这是我的代码,请有人帮助我哪里出了问题,谢谢:)。
import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.Timer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BelishaBeacon {
private static Timer timer;
public class Drawing extends JPanel {
private int x = 125;
private int y = 80;
private boolean changeColors = false;
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//creating the shapes
Rectangle box1 = new Rectangle(165, 180, 20, 45);
Rectangle box2 = new Rectangle(165, 225, 20, 45);
Rectangle box3 = new Rectangle(165, 270, 20, 45);
Rectangle box4 = new Rectangle(165, 315, 20, 45);
Rectangle box5 = new Rectangle(165, 360, 20, 45);
Rectangle box6 = new Rectangle(165, 405, 20, 45);
//drawing the shapes
Ellipse2D.Double ball = new Ellipse2D.Double(x, y, 100, 100);
g2.draw(ball);
g2.draw(box1);
g2.draw(box2);
g2.draw(box3);
g2.draw(box4);
g2.draw(box5);
g2.draw(box6);
//coloring the shapes
g2.setColor(Color.BLACK);
g2.fill(box1);
g2.fill(box3);
g2.fill(box5);
g2.setColor(Color.ORANGE);
g2.fill(ball);
changeColors = !changeColors;
if (changeColors) {
g2.setColor(Color.darkGray);
g2.fill(new Ellipse2D.Double(x, y, 100, 100));
}
}
public void changeColors() {
changeColors = true;
repaint();
}
}
public BelishaBeacon() {
//Creation of frame
JFrame frame = new JFrame();
frame.setSize(350, 570);
frame.setTitle("Belisha Beacon");
frame.setLayout(new BorderLayout(0, 0));
final Drawing shapes = new Drawing();
timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
shapes.repaint();
}
});
JButton jbtFlash = new JButton("Flash");
jbtFlash.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
final JButton jbtSteady = new JButton("Steady");
jbtSteady.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
timer.stop();
}
});
//Positioning
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new GridLayout(1, 2, 0, 0));
controlPanel.add(jbtFlash);
controlPanel.add(jbtSteady);
frame.add(controlPanel, BorderLayout.SOUTH);
frame.add(shapes);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args) {
new BelishaBeacon();
timer.start();
}
}
最佳答案
因此,对于您的 Flash 按钮,监听器当前为空。您要做的是检查按下闪光灯按钮时是否再次启动计时器。
试试这个
JButton jbtFlash = new JButton("Flash");
jbtFlash.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Flashing");
if (!timer.isRunning()) {
timer.start();
}
}
});
还有您的稳定按钮问题。目前没有逻辑来检查当前颜色是什么,即它是灰色还是黄色。因此,您需要以某种方式修改代码来检查当前颜色状态并在为黄色时停止它。有一些想法:)
关于java - Belisha Beacon Java程序按钮查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36623091/
任务是为 Belisha 信标编写代码,该信标一开始会闪烁,颜色在浅灰色和橙色之间交替,并有两个按钮:闪烁和稳定。因此,当我单击“稳定”按钮时,信标必须保持为橙色,但对于我的程序,当我单击“稳定”按钮
基本上,当我单击稳定按钮时,我的 Belisha 信标必须保持橙色,但在我的程序中,当我单击稳定按钮时,信标保持浅灰色。有人可以指出我哪里出了问题吗?非常感谢:)。这是我的代码: package Ho
我是一名优秀的程序员,十分优秀!