我在下面的课程中使用了一些交互者。所有这些功能都很完美,即它们可以满足我的需求。但是,它们在视觉上不起作用。例如,当我按下用于清除屏幕的JButton时,它会这样做,但是JButton没有按下。这对于JButton来说很好,但是对于Radio Buttons来说它会带来一个问题。当我点击切换单选按钮时,我可以切换屏幕上发生的事情,但单选按钮的选择不会切换。为什么会这样?我已经盯着代码几个小时了,只是想不出来。 (我希望我的描述很清楚......这是代码......)。可以找到acm库的文档here。
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);
}
}
答案 0 :(得分:0)
我对这些交互者有同样的问题。由于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
答案 1 :(得分:0)
我遇到了完全相同的问题,并且在Google中使用它时遇到了很大的麻烦。南部和东部的位置都不起作用,而北部和西部的情况很好。
然后我找到了来自mgus的答案,这使我从源(http://cs.stanford.edu/people/eroberts/jtf/acm.jar)下载了acm.jar(315 KB)文件。我使用了斯坦福CS106A acm.jar(406 KB),这显然是不同的。
问题解决了我。