私は次のクラスでいくつかのインタラクタを使用しています。それらのすべては完全に機能する、すなわち、彼らは私が望むことを行う。しかし、視覚的には機能しません。例えば、画面をクリアするためのJButtonを押すと、JButtonは押されません。これはJButtonでは問題ありませんが、ラジオボタンでは問題があります。ラジオボタンをクリックして切り替えると、画面上で何が起こっているのかを切り替えることができますが、ラジオボタンの選択は切り替わりません。なぜこうなった?私は何時間もコードを見つめて、それを理解することはできません。 (私の説明がはっきりしていればいいと思いますが...コードはここにあります...)。 acmライブラリのドキュメントはhereです。JButtonが視覚的に機能しません
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);
}
}
すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –
数千文字を削除しました。それが問題の一部である場合にスイングインタラクタの初期化を取り除きたくはありませんが、それでも短縮しようとしました。 – rbharvs
どこかの誰かのようなサウンドは、repaint()を正しく呼び出すことができません。 –