Proszę o pomoc
Chciałbym aby ktoś pomógł mi i sprawił aby adhoc przepisywały się wartości z pola apletu pktX do pola predkoscX poprzez metode osX(double,double,string,string,string) . Mam spory problem z dzialaniem propertycomandlistenera.
Bardzo dziękuję za pomoc i wszelkie uwagi także krytyczne. :)
package ploter;
import java.awt.;
import java.awt.event.;
import java.lang.String.;
import javax.swing.;
import javax.swing.event.;
import javax.swing.text.;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.List;
import java.text.*;
public class Main extends JPanel implements PropertyChangeListener {
private double lpunktow = 8 ;
private double predkosc ;
private String pktX ;
private String pktY ;
private String pktZ ;
private JLabel lpunktowLabel;
private JLabel predkoscLabel;
private JLabel pktXLabel;
private JLabel pktYLabel;
private JLabel pktZLabel;
private JLabel predkoscXLabel;
private JLabel predkoscYLabel;
private JLabel predkoscZLabel;
private static String lpunktowString = "Liczba punktow: ";
private static String predkoscString = "Prędkość max m/s: ";
private static String pktXString = "Punkty X: ";
private static String pktYString = "Punkty Y: ";
private static String pktZString = "Punkty Z: ";
private static String predkoscXString = "Prędkość X: ";
private static String predkoscYString = "Prędkość Y: ";
private static String predkoscZString = "Prędkość Z: ";
private JFormattedTextField lpunktowField;
private JFormattedTextField predkoscField;
private JTextField pktXField;
private JTextField pktYField;
private JTextField pktZField;
private JTextField predkoscXField;
private JTextField predkoscYField;
private JTextField predkoscZField;
private NumberFormat lpunktowFormat;
private NumberFormat predkoscFormat;
private NumberFormat pktXFormat;
private NumberFormat pktYFormat;
private NumberFormat pktZFormat;
private NumberFormat predkoscXFormat;
private NumberFormat predkoscYFormat;
private NumberFormat predkoscZFormat;
public Main() {
super(new BorderLayout());
//setUpFormats();
String predkoscX = osX(lpunktow,predkosc,pktX,pktY,pktZ);
String predkoscY = osY(lpunktow,predkosc,pktX,pktY,pktZ);
String predkoscZ = osZ(lpunktow,predkosc,pktX,pktY,pktZ);
lpunktowLabel = new JLabel(lpunktowString);
predkoscLabel = new JLabel(predkoscString);
pktXLabel = new JLabel(pktXString);
pktYLabel = new JLabel(pktYString);
pktZLabel = new JLabel(pktZString);
predkoscXLabel = new JLabel(predkoscXString);
predkoscYLabel = new JLabel(predkoscYString);
predkoscZLabel = new JLabel(predkoscZString);
lpunktowField = new JFormattedTextField(lpunktowFormat);
lpunktowField.setValue(new Double(lpunktow));
lpunktowField.setColumns(10);
lpunktowField.addPropertyChangeListener("value", this);
predkoscField = new JFormattedTextField(predkoscFormat);
predkoscField.setValue(new Double(predkosc));
predkoscField.setColumns(10);
predkoscField.addPropertyChangeListener("value", this);
pktXField = new JTextField();
pktXField.setColumns(10);
pktXField.setText(pktX);
pktXField.addPropertyChangeListener("value", this);
pktYField = new JTextField();
pktYField.setColumns(10);
pktZField = new JTextField();
pktZField.setColumns(20);
predkoscXField = new JTextField();
predkoscXField.setColumns(20);
predkoscXField.setText(predkoscX);
predkoscYField = new JTextField();
predkoscYField.setColumns(20);
predkoscZField = new JTextField();
predkoscZField.setColumns(20);
pktZField = new JTextField();
pktZField.setColumns(20);
lpunktowLabel.setLabelFor(lpunktowField);
predkoscLabel.setLabelFor(predkoscField);
pktXLabel.setLabelFor(pktXField);
pktYLabel.setLabelFor(pktYField);
pktZLabel.setLabelFor(pktZField);
predkoscXLabel.setLabelFor(predkoscXField);
predkoscYLabel.setLabelFor(predkoscYField);
predkoscZLabel.setLabelFor(predkoscZField);
JPanel labelPane = new JPanel(new GridLayout(0,1));
labelPane.add(lpunktowLabel);
labelPane.add(predkoscLabel);
labelPane.add(pktXLabel);
labelPane.add(pktYLabel);
labelPane.add(pktZLabel);
labelPane.add(predkoscXLabel);
labelPane.add(predkoscYLabel);
labelPane.add(predkoscZLabel);
JPanel fieldPane = new JPanel(new GridLayout(0,1));
fieldPane.add(lpunktowField);
fieldPane.add(predkoscField);
fieldPane.add(pktXField);
fieldPane.add(pktYField);
fieldPane.add(pktZField);
fieldPane.add(predkoscXField);
fieldPane.add(predkoscYField);
fieldPane.add(predkoscZField);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
add(labelPane, BorderLayout.CENTER);
add(fieldPane, BorderLayout.LINE_END);
}
public void propertyChange(PropertyChangeEvent e) {
Object source = e.getSource();
if (source == pktXField) {
pktX = pktXField.getText().toString();
} else if (source == pktYField) {
pktY = pktYField.getText();
} else if (source == pktZField) {
pktZ = pktZField.getText();
} else if (source == lpunktowField) {
lpunktow = ((Number)lpunktowField.getValue()).doubleValue();
} else if (source == predkoscField) {
predkosc = ((Number)predkoscField.getValue()).doubleValue();
}
String predkoscX = osX(lpunktow, predkosc , pktX, pktY, pktZ);
String predkoscY = osY(lpunktow, predkosc , pktX, pktY, pktZ);
String predkoscZ = osZ(lpunktow, predkosc , pktX, pktY, pktZ);
predkoscXField.setText(predkoscX);
predkoscYField.setText(predkoscY);
predkoscZField.setText(predkoscZ);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Ploter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new Main());
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
UIManager.put("swing.boldMetal", Boolean.FALSE);
createAndShowGUI();
}
});
}
String osX(Double lpunktow,Double predkosc, String pktX, String pktY,String pktZ) {
return pktX;
}
String osY(Double lpunktow,Double predkosc, String pktX, String pktY,String pktZ) {
return pktY;
}
String osZ(Double lpunktow,Double predkosc, String pktX, String pktY,String pktZ) {
return pktZ;
}
}