0

次のクラスでいくつかのインタラクターを使用しています。それらはすべて完全に機能します。つまり、私が望むことを実行します。ただし、視覚的には機能しません。たとえば、画面をクリアするためのJButtonを押すと、JButtonは押されませんが、JButtonは押されません。これはJButtonには問題ありませんが、ラジオボタンには問題があります。クリックしてラジオボタンを切り替えると、画面に表示されている内容を切り替えることができますが、ラジオボタンの選択は切り替わりません。なぜこうなった?私は何時間もコードを見つめてきましたが、それを理解することはできません。(私の説明が明確であることを願っています...ここにコードがあります...)。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

これらのインタラクターにも同じ問題がありました。パッケージは比較的古いため、1.6 や 1.7 などのacmより新しい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 (2 つ目のアカウントには無料の 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) ファイルをダウンロードしました。明らかに異なるスタンフォード CS106A acm.jar (406 KB) を使用しました。

問題は解決しました。

于 2016-09-11T18:36:58.447 に答える