Java JButton无法直观地运行
我在下面的类中使用了一些交互器。所有这些功能都很完美,也就是说,它们做我想做的事情。但是,它们在视觉上不起作用。例如,当我按下JButton时,它会清除屏幕,但JButton不会按下。这对于JButton很好,但是对于单选按钮,它会带来一个问题。当我点击切换单选按钮时,我可以切换屏幕上发生的事情,但单选按钮的选择不会切换。为什么会这样?我盯着代码看了好几个小时,就是想不出来。我希望我的描述是清楚的…这是代码。。。。可以找到acm库的文档Java JButton无法直观地运行,java,swing,jbutton,acm-java-libraries,Java,Swing,Jbutton,Acm Java Libraries,我在下面的类中使用了一些交互器。所有这些功能都很完美,也就是说,它们做我想做的事情。但是,它们在视觉上不起作用。例如,当我按下JButton时,它会清除屏幕,但JButton不会按下。这对于JButton很好,但是对于单选按钮,它会带来一个问题。当我点击切换单选按钮时,我可以切换屏幕上发生的事情,但单选按钮的选择不会切换。为什么会这样?我盯着代码看了好几个小时,就是想不出来。我希望我的描述是清楚的…这是代码。。。。可以找到acm库的文档 我对这些互动者也有同样的问题。由于acm包相对较旧,它不能
我对这些互动者也有同样的问题。由于acm包相对较旧,它不能与比Java1.5(如1.6或1.7)更新的JRE库一起使用。我从这里下载了这个版本:或者在这里:第二个版本需要有一个免费的Oracle帐户,交互程序现在可以正常工作了。如果您在安装后使用Eclipse,则继续执行项目:右键单击->属性->Java构建路径->库选项卡->添加库->JRE系统库->下一步->已安装的JRE->添加->标准VM->下一步->目录,例如C:\Program Files x86\Java\jre1.5.0_10->完成->选中jre1.5.0_10框->确定->完成->确定有着完全相同的问题,在谷歌的措辞上有很大的困难。南面和东面的位置根本不起作用,而北面和西面的位置都很好 然后我从mgus找到了答案,这让我从源代码下载了acm.jar 315 KB文件。我使用了斯坦福CS106A acm.jar 406KB,这显然是不同的
问题已为我解决。为了更快地获得更好的帮助,请发布一个。只删除了几千个字符。我不想摆脱swing Interactitor的初始化,以防这是问题的一部分,但我还是尝试缩短它。听起来好像有人没有正确调用重新绘制。只是删除了几千个字符。。你看过链接了吗?顺便说一句,请学习如何正确格式化代码。您已经在这个线程上执行了两次,其中结尾}不在格式化代码中。请修复它,以后要更加小心,在发送给其他人之前,检查预览中的帖子格式。我的意思是,为了简化示例,我删掉了很多内容。我没有通过点击和拖动来添加整个代码部分,而是将其缩短为快速点击添加。你是说信息丢失了吗?
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);
}
}