验证按下的按钮

时间:2015-10-12 07:59:25

标签: java swing jframe

我正在开发像西蒙斯说的“游戏”。我在Jframe中有七个声音

我需要重现例如“Do”音符,然后用户必须按相同的音符。在应用程序必须重现“Do”音符然后再“Re”之后,用户必须按该顺序按相同的音符。 所以我创建了一个开始按钮,第一个声音将在几秒后再现...... 我的疑问是,如何确认用户按下的按钮是响起的按钮?

这是“开始”按钮的代码:

    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {
        //delay the sound
        Thread.sleep(2000);
        sonido("do");
        //mark the border of the played sound
        jButton1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 255, 255), 3, true));
        //show in a label the name of the played sound
        jLabel1.setText("DO");
    } catch (LineUnavailableException | IOException | UnsupportedAudioFileException | InterruptedException ex) {
        Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}             

这是“执行”按钮的代码(所有其他按钮都相同,只需更改sonido方法中的参数)

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    setButtonstoNull();
    if(evt.getSource()==jButton1){
        try {
            sonido("do");
            jButton1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 255, 255), 3, true));

        } catch (LineUnavailableException | IOException | UnsupportedAudioFileException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}       

我该如何比较?如果有一种方法,这种比较应该在开始按钮方法中吗?

如果有人可以指导我,非常感谢

1 个答案:

答案 0 :(得分:0)

创建一个类似的枚举:

public enum Note {
DO
{
    @Override
    public String getNote() {return "do";}
    @Override
    public String getText() {return "DO";}
    @Override
    public Color getColor() {return new Color(255, 255, 255);}
},
RE
{...},
...
SI
{...};

 abstract String getNote()
 abstract String getText()
 abstract String getColor()
}

您可以在任何地方使用它来执行比较并保存一些复制/粘贴。