0

我在下面的课程中使用了一些交互器。所有这些功能都完美无缺,即他们做我想做的事。但是,它们在视觉上不起作用。例如,当我按下旨在清除屏幕的 JButton 时,它会这样做,但 JButton 不会按下。这对于 JButton 来说很好,但对于 Radio Buttons 来说却是个问题。当我单击切换单选按钮时,我可以切换屏幕上的内容,但单选按钮的选择不会切换。为什么会这样?我已经盯着代码看了好几个小时,就是想不通。(我希望我的描述很清楚......这是代码......)。可以在此处找到 acm 库的文档。

package forces;

import java.util.*;
import javax.swing.*;
import acm.graphics.*;
import java.awt.event.*;

public class InteractiveClosedSystem extends ClosedSystem {

    private GOval newMass;
    private JRadioButton positiveRB;
    private JRadioButton negativeRB;

    public void init() {

        masses = new ArrayList<Mass>();

        add(new JButton("Clear"), SOUTH);

        initRadioButtons();

        addActionListeners();
        addMouseListeners();
        addKeyListeners();
    }

    private void initRadioButtons() {

        // Radio button group for charge
                ButtonGroup chargeBG = new ButtonGroup();
        positiveRB = new JRadioButton("Positive");
        negativeRB = new JRadioButton("Negative");

        // Add all radio buttons to button group
        chargeBG.add(positiveRB);
        chargeBG.add(negativeRB);

        // Set initial radio button selection
        positiveRB.setSelected(true);

        // Add all radio buttons to control bar
        add(new JLabel("     Charge"), SOUTH);
        add(positiveRB, SOUTH);
        add(negativeRB, SOUTH);
    }

    public void actionPerformed(ActionEvent e) {

        String cmd = e.getActionCommand();
        if (cmd.equals("Clear")) {
            masses.removeAll(masses);
            removeAll();
        }
    }

    public void mouseClicked(MouseEvent e) {

        newMass = new GOval(e.getX(), e.getY(), 30, 30);

        newMass.setFilled(true);
        if (positiveRB.isSelected()) {
        newMass.setColor(Mass.POSITIVE_COLOR);
        } else {
        newMass.setColor(Mass.NEGATIVE_COLOR);
        }

        add(newMass);
    }
}
4

2 回答 2

0

我对这些交互器有同样的问题。由于该acm软件包相对较旧,它不能与比1.6 或 1.7 等更新的JRE库一起使用。Java 1.5我从这里下载了这个版本:http ://www.filehippo.com/download_jre_32/3446/ 或这里:http ://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase5- 419410.html(您需要有一个免费的 Oracle 帐户才能使用第二个帐户),交互器现在可以正常工作了。如果您在安装后使用 Eclipse,您将继续该项目:Right click -> Properties -> Java Build Path -> Libraries (tab) -> Add Library -> JRE System Library -> Next -> Installed JREs -> Add -> Standard VM -> Next -> Directory e.g. C:\Program Files (x86)\Java\jre1.5.0_10 -> Finish -> Check the jre1.5.0_10 box -> OK -> Finish -> OK

于 2012-08-27T11:16:20.583 回答
0

我遇到了完全相同的问题,并且在 Google 中措辞时遇到了很大的麻烦。SOUTH 和 EAST 位置不起作用,而 NORTH 和 WEST 很好。

然后我找到了 mgus 的答案,这导致我从源 ( http://cs.stanford.edu/people/eroberts/jtf/acm.jar ) 下载了 acm.jar (315 KB) 文件。我使用了明显不同的 Stanford CS106A acm.jar (406 KB)。

问题为我解决了。

于 2016-09-11T18:36:58.447 回答