【发布时间】:2016-03-24 10:37:15
【问题描述】:
在过去的一周里,我一直在尝试制作一个可以工作的 GUI。我尝试了网格袋布局,现在如下。然而,我无法得到我需要工作的所有东西。拿下面的代码我有
public class testGUI extends JPanel {
protected static double [] value;
JPanel jp = new JPanel();
JTextArea jt = new JTextArea(10,40);
public testGUI()
{
JButton btn1 = new JButton("SportCar");
JButton btn2 = new JButton("Van");
btn1.addActionListener(new ButtonListener());
btn2.addActionListener(new ButtonListener());
jp.add(jt);
add(btn1);
add(btn2);
}
public static void main(String[] args) {
for (int i=0; i<args.length;i++)
{ value[i]= Double.parseDouble(args[i]);
}
JFrame frame = new JFrame();
frame.getContentPane().add(new testGUI());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
}
}
class ButtonListener implements ActionListener {
ButtonListener() {}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("SportCar"))
{ Vehicle car1 = new SportCar(value[0],value[1],value[2]);
System.out.println("You have made a new Sportcar");
}
else if(e.getActionCommand().equals("Van"))
{ Vehicle car1= new Van(value[0],value[1],value[2],value[3]);
System.out.println("You have made a new Van");
}
}
}
我已经创建了监听器,但我不能做的两件事是在 GUI 中创建一个显示实例变量的文本区域。而且 SportCar 和 Van 构造函数需要 3 和 4 个用户输入的数字,这也是我做不到的。请帮助我在 GUI 上停留太久了。谢谢
【问题讨论】:
-
到底是什么不起作用?它不会给您期望的结果吗?你得到一个编译时错误吗?您是否收到运行时错误?
-
通过实例化它。在静态和非静态方法中都使用它有点狡猾,但不应该阻止工作。
-
您可以将数据结构(数组;尽管我建议使用列表)包装在单例模式中。它比使用在整个代码中使用的静态字段更优雅
-
没有冲突。如果您在它的“父”类之外使用它,只需将您的静态字段称为 testGui.value[i] 。否则 jvm 将在您的 ButtonListner 中搜索 vor value[]。而且没有这样的字段,所以它给出了一个错误。
-
如果您想显示文本(如输出),您可以使用 textArea 或 textfield 并将其设置为不可编辑“jt.setEditable(false)”。您还可以使用 JLabel 来显示您的输出
标签: java oop user-interface