JButton не работает визуально - PullRequest
0 голосов
/ 14 марта 2012

Я использую несколько интеракторов в следующем классе. Все они отлично работают, то есть делают то, что я хочу. Тем не менее, они не работают визуально. Например, когда я нажимаю кнопку 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);
    }
}

Ответы [ 2 ]

0 голосов
/ 11 сентября 2016

У меня была точно такая же проблема, и мне было сложно сформулировать ее в Google.Положение ЮГ и ВОСТОК просто не работало, в то время как СЕВЕР и ЗАПАД были в порядке.

Затем я нашел ответ от mgus, который привел меня к загрузке файла acm.jar (315 КБ) из источника (http://cs.stanford.edu/people/eroberts/jtf/acm.jar).). Я использовал Stanford CS106A acm.jar (406 КБ), которыйбыл явно другим.

Проблема для меня решена.

0 голосов
/ 27 августа 2012

У меня была такая же проблема с этими интеракторами.Поскольку пакет acm относительно старый, он не работает с более новыми библиотеками JRE, чем Java 1.5, такими как 1.6 или 1.7.Я скачал эту версию отсюда: 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

...