Java 如何将动作添加到另一个按钮内的新jbutton,以播放jfugue模式

Java 如何将动作添加到另一个按钮内的新jbutton,以播放jfugue模式,java,jbutton,jfugue,Java,Jbutton,Jfugue,我想问一下如何在java中添加动作jbutton,我是java的新手。 我正在用netbeans制作一个和声搜索算法优化和弦的程序。jButton3有一个处理算法的函数,但我需要将1个按钮命名为jButton1,仅用于播放已经优化的模式。但是我收到一个错误的信息 不兼容类型:无法将void转换为jButton1 我怎样才能修好它?多谢各位 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

我想问一下如何在java中添加动作jbutton,我是java的新手。 我正在用netbeans制作一个和声搜索算法优化和弦的程序。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);

    }  
这是你的问题:

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
中播放模式,但它需要将
模式
标记为
final
,这需要您有更多的Java经验才能完全理解)

在我看来,方法play返回类型是无效的,因此不能将ergo分配给jButton1。我不确定我是否理解正确,但jButton1是一个按钮,对吗?在它的点击动作中,你想运行已经优化的模式吗?然后您首先需要了解如何从播放器优化模式,它看起来像“player.play(pattern)”只运行它,可能它保存在播放器的其他属性中?一旦你得到它,将它保存在一些私有属性中,你可以在你的jButton3ActionPerformed中使用它,但不要尝试将它分配给按钮。谢谢你的回答,先生,是的jbutton1是一个按钮,我想在点击jbutton1时播放该模式。已经优化的模式在bestMusicString变量上。我假设这段代码在类或类似的东西中,对吗?使模式成为类的属性,或者类似的东西,可以通过jButton1的操作来访问,并在其中编写代码“Player=new Player();Player.play(pattern);”。1)发布一个。2) 当您收到错误时,发布堆栈跟踪并指定所发布代码中的哪一行抛出它。