【发布时间】:2014-03-01 21:59:38
【问题描述】:
我有这段代码,我希望它重新绘制,这样当用户输入详细信息时,它会打印出加速度和油耗(在另一个类中计算),我可以看到它有效,因为我有 system.out.println's显示值,但它们没有更新到我的 JFrame。
window() 在另一个类的另一个构造函数中被调用,JFrame 可以正常打开但没有更新
有什么想法吗?
谢谢
public class Vehicle extends JFrame {
protected static double horsepower;
protected static double aerodynamics;
protected static double weight;
protected static double acceleration;
protected static double topspeed;
protected double fuelconsumption;
protected String userHorsepower;
protected String userWeight;
protected String userTopspeed;
protected String userInput = "No Current Selection";
JPanel panel = new JPanel();
JButton Van = new JButton("Add Van");
public Vehicle(double horsepower, double weight, double aerodynamics, double topspeed){
super();
}
public void window(){
JButton Van = new JButton("Add Van Car");
Van.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
userHorsepower = JOptionPane.showInputDialog("Enter Horsepower");
horsepower = Double.parseDouble(userHorsepower);
userWeight = JOptionPane.showInputDialog("Enter Weight");
weight = Double.parseDouble(userWeight);
userTopspeed = JOptionPane.showInputDialog("Enter Topspeed");
topspeed = Double.parseDouble(userTopspeed);
aerodynamics = 0.9;
userInput = "Van";
TestConsumption.printVan();
repaint();
return;
}});
JButton SportCar = new JButton("Add Sports Car");
SportCar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
userHorsepower = JOptionPane.showInputDialog("Enter Horsepower");
horsepower = Double.parseDouble(userHorsepower);
userWeight = JOptionPane.showInputDialog("Enter Weight");
weight = Double.parseDouble(userWeight);
userTopspeed = JOptionPane.showInputDialog("Enter Topspeed");
topspeed = Double.parseDouble(userTopspeed);
aerodynamics = 0.5;
userInput = "Sports Car";
TestConsumption.printCar();
panel.repaint();
}});
JLabel userChoice = new JLabel(userInput);
JLabel accel = new JLabel("Acceleration: " + acceleration);
JLabel fuel = new JLabel("Fuel Consumption: " + fuelconsumption);
panel.setLayout(new GridLayout(5,5,0,0));
panel.add(Van);
panel.add(SportCar);
panel.add(userChoice);
panel.add(accel);
panel.add(fuel);
add(panel);
pack();
setTitle("Title Here");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setSize(300,200);
setLocationRelativeTo(null);
setVisible(true);
repaint();
}
在这个类中调用窗口
public class TestConsumption extends Vehicle {
public TestConsumption(double horsepower, double weight, double aerodynamics, double topspeed) {
super(horsepower, weight, aerodynamics, topspeed);
}
public static void main(String [] args){
Vehicle vh = new Vehicle(500, 500, 500, 500);
vh.window();
}
public static void printCar(){
Vehicle Car = new SportCar(horsepower,weight,aerodynamics,topspeed);
Car.acceleration();
Car.showFuelConsumption();
}
public static void printVan(){
Vehicle FirstVan = new Van(horsepower,weight,aerodynamics,topspeed);
FirstVan.acceleration();
FirstVan.showFuelConsumption();
}
}
【问题讨论】:
-
你提到的
window()在哪里调用,System.out在哪里调用 -
window 在另一个类中被调用,在 public static void main 部分中
-
这还不够代码给你答案。请提供SSCCE,准确显示您在这两个课程中所做的事情。请注意,这不应该是您的整个程序,只要我们能得到一个想法就足够了。