2

我想问一下如何在java中添加动作jbutton,我是java的新手。我正在制作一个程序,使用 netbeans 使用 Harmony Search 算法优化和弦。jButton3 具有处理算法的功能,但我需要将 1 个按钮命名为 jButton1,仅用于播放已经优化的模式。但我收到一条消息错误

不兼容的类型:void 无法转换为 jButton1。

我该如何解决?谢谢你。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:

hs = new HarmonySearch(oriChord, hms, hmcr, par, delta, max_iteration);

        //hs = new HarmonySearch();

        hs.train();
        String melodyMusicString = hs.nodeListToMusicString(oriMelody);
        String chordMusicString = hs.nodeListToMusicString(oriChord);
        String bestMusicString = hs.nodeListToMusicString(hs.best_chord());
        //System.out.println(chordMusicString);
        Pattern pattern = new Pattern("T["+jComboBox1.getSelectedItem()+"]");
        pattern.add("V0 " + melodyMusicString);
        pattern.add("V1 " + bestMusicString);
        Player player = new Player();
        jButton1 = player.play(pattern);

    }  
4

1 回答 1

0

这是你的问题:

jButton1 = player.play(pattern);

问题是它player.play不返回值,这不是让按钮在 Java 中执行操作的方式。

我认为您要做的是在按下按钮时播放模式。我相信你需要这个:

jButton1 = new JButton("Play pattern");
jButton1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        playPattern();
    }
});

稍后,添加此方法:

public void playPattern() {
    player.play(pattern);
}

(您也可以在 中播放该模式actionPerformed,但它需要标记patternfinal,要完全理解它需要您有更多的 Java 经验)

于 2015-05-27T16:37:50.067 回答