Java JButton无法直观地运行

Java JButton无法直观地运行,java,swing,jbutton,acm-java-libraries,Java,Swing,Jbutton,Acm Java Libraries,我在下面的类中使用了一些交互器。所有这些功能都很完美,也就是说,它们做我想做的事情。但是,它们在视觉上不起作用。例如,当我按下JButton时,它会清除屏幕,但JButton不会按下。这对于JButton很好,但是对于单选按钮,它会带来一个问题。当我点击切换单选按钮时,我可以切换屏幕上发生的事情,但单选按钮的选择不会切换。为什么会这样?我盯着代码看了好几个小时,就是想不出来。我希望我的描述是清楚的…这是代码。。。。可以找到acm库的文档 我对这些互动者也有同样的问题。由于acm包相对较旧,它不能

我在下面的类中使用了一些交互器。所有这些功能都很完美,也就是说,它们做我想做的事情。但是,它们在视觉上不起作用。例如,当我按下JButton时,它会清除屏幕,但JButton不会按下。这对于JButton很好,但是对于单选按钮,它会带来一个问题。当我点击切换单选按钮时,我可以切换屏幕上发生的事情,但单选按钮的选择不会切换。为什么会这样?我盯着代码看了好几个小时,就是想不出来。我希望我的描述是清楚的…这是代码。。。。可以找到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);
    }
}