我有這樣的代碼,我希望它重新繪製,這樣,當用戶進入它打印出的加速和油耗的細節(在另一個類計算),我可以看到它的作品,因爲我有system.out.println顯示的值,但他們沒有更新到我的JFrame。repaint方法不使用的Java
窗口()被調用在另一個類另一個構造,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'調用你提到的 –
窗口在另一個類中被調用,在公共靜態void主要部分 – user3166873
這是不夠的代碼給你一個回答。請提供一個[SSCCE](http://sscce.org),以顯示您在兩個班級中所做的工作。請注意,這不應該是你的整個程序,只是足夠的,所以我們可以得到一個想法。 –