Belisha Beacon Java Program 按钮查询

Posted

技术标签:

【中文标题】Belisha Beacon Java Program 按钮查询【英文标题】:Belisha Beacon Java Program button query 【发布时间】:2016-08-06 00:09:32 【问题描述】:

任务是为 Belisha Beacon 编写代码,它以闪烁开始,颜色在浅灰色和橙色之间交替,并有两个按钮,即 Flash 和 Steady。因此,当我单击稳定按钮时,信标必须保持为橙色,但对于我的程序,当我单击稳定按钮和单击 Flash 按钮后,信标会保持稳定在任何颜色上稳定按钮,信标不再闪烁。到目前为止,这是我的代码,请有人帮助我哪里出错了,谢谢:)。

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();
    

【问题讨论】:

【参考方案1】:

因此,对于您的 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();
            

        
    );

对于您的稳定按钮问题。目前没有逻辑来检查当前颜色是什么,即它是灰色还是黄色。因此,您将需要以某种方式修改代码以检查当前颜色状态并在它为黄色时停止它。有一些想法:)

【讨论】:

非常感谢 bili :),这对我帮助很大:D。 @Federer 暂时按下稳定按钮,如果您仍然卡住,请返回此处。 稳定按钮我尝试更改它以确保无论何时单击稳定按钮,它都保持在橙色,但仍然没有运气。但它确实开始再次闪烁,这是一首好歌。 @Federer 如何用当前代码判断颜色是橙色还是灰色?提示:看看绘制球的代码:) 是setColor吗? :)

以上是关于Belisha Beacon Java Program 按钮查询的主要内容,如果未能解决你的问题,请参考以下文章

Java中的getView和Beacon(Estimote)问题

802.11 ------ Beacon帧Beacon IntervalTBTTListen IntervalTIMDTIM

Estimote Beacon - 如何将 EstimoteTelemetry 与 Beacon 匹配

有关802.11的Beacon帧

当设备已经在 Beacon 范围内时无法检测到 Beacon 然后我们打开蓝牙 & 应用程序被杀死

ZigBee网络信标(Beacon)和非信标(Non-beacon)两种工作模式