我正在创建一个简单的程序来创建和掷骰子。有一个单独的Die类,其中包含一个有争议的构造函数,它将模具应具有的边数作为参数。我遇到的问题是何时创建模具对象。作为一个字段我觉得太快了,因为我必须在监听器方法中指定参数,并且当它在监听器方法中创建时,当再次调用die对象时,不能再在外部修改它。
`package question1;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
This frame shows a data set and its statistics.
*/
public class DieGUI extends JFrame
{
private static int WINDOW_WIDTH = 450;
private static int WINDOW_HEIGHT = 250;
private JLabel message;
private JTextField Sides;
private JTextArea data;
private JButton create;
private JButton rollButton;
private static JPanel panel;
private int numSides;
//declare data fields here (GUI Components and other data fields)
public DieGUI()
{
message = new JLabel("Enter number of sides");
Sides = new JTextField(5);
create = new JButton("Create");
rollButton = new JButton("Roll Current Die");
data = new JTextArea(10, 30);
panel = new JPanel();
panel.add(message);
panel.add(Sides);
panel.add(create);
panel.add(rollButton);
panel.add(data);
//Initialize data fields and construct GUI
//supporting methods are here.
create.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
numSides = Integer.parseInt(Sides.getText());
data.append("Note that creating a new die replaces the current one");
Die die = new Die(numSides);
data.append("\n" + die.toString());
}
});
rollButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg1){
die.roll();
data.append("\n" + die.getSideUp());
}
});
}
public static void main(String[] args)
{
JFrame frame = new DieGUI();
frame.setTitle("Dice GUI!");
frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(panel);
}}`
答案 0 :(得分:0)
有很多方法可以解决这个问题:
将die添加为具有默认面数的字段。添加方法,
setFaceCount()
类Die
以根据需要更新此内容
你的倾听者。
添加die字段,但默认设置为null。更换模具 在你的听众中。
无论如何,您需要创建一个die字段,以便可以在侦听器方法范围之外访问它。如何设计它将取决于您在GUI中的行为。