Huhu,
ich bin gerade dabei mich mit Swing und Co. rumzuschlagen. Nun habe ich einen simplen Umrechner gebastelt der Fahrenheit in Celsius umrechnet. Andersrum wollte ich es nun genau so machen. Mit zwei Buttons oder dem Betätigen der Enter-Taste ist das absolut kein Problem. Allerdings möchte ich es so haben, dass beim Drücken des Umrechnen Buttons automatisch gecheckt wird, welches textfield zuletzt den Focus hatte und dementsprechend die richtige Methode ausführt.
Irgendwie stehe ich auf dem Schlauch In den Zeilen 89 - 100 ist der Button zzgl. meiner if, die einfach nicht funktionieren möchte. Er überspringt das if immer und geht sofort ins else. Habe bereits gegoogled und selber Sachen ausprobiert, aber ich komme einfach nicht voran.
ich bin gerade dabei mich mit Swing und Co. rumzuschlagen. Nun habe ich einen simplen Umrechner gebastelt der Fahrenheit in Celsius umrechnet. Andersrum wollte ich es nun genau so machen. Mit zwei Buttons oder dem Betätigen der Enter-Taste ist das absolut kein Problem. Allerdings möchte ich es so haben, dass beim Drücken des Umrechnen Buttons automatisch gecheckt wird, welches textfield zuletzt den Focus hatte und dementsprechend die richtige Methode ausführt.
Irgendwie stehe ich auf dem Schlauch In den Zeilen 89 - 100 ist der Button zzgl. meiner if, die einfach nicht funktionieren möchte. Er überspringt das if immer und geht sofort ins else. Habe bereits gegoogled und selber Sachen ausprobiert, aber ich komme einfach nicht voran.
Java:
package gui;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.DecimalFormat;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class FahrenheitCelsius extends JFrame {
private JPanel contentPane;
private JTextField tfFahrenheit;
private JTextField tfCelsius;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FahrenheitCelsius frame = new FahrenheitCelsius();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public FahrenheitCelsius() {
setTitle("Umrechnung - Fahrenheit in Celsius");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 218);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblFahrenheit = new JLabel("Grad Fahrenheit");
lblFahrenheit.setBounds(10, 11, 91, 14);
contentPane.add(lblFahrenheit);
tfFahrenheit = new JTextField();
tfFahrenheit.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
umrechnenInCelsius();
}
}
});
tfFahrenheit.setBounds(10, 36, 271, 20);
contentPane.add(tfFahrenheit);
tfFahrenheit.setColumns(10);
JLabel lblCelsius = new JLabel("Grad Celsius");
lblCelsius.setBounds(10, 72, 91, 14);
contentPane.add(lblCelsius);
tfCelsius = new JTextField();
tfCelsius.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER){
umrechnenInFahrenheit();
}
}
});
tfCelsius.setBounds(10, 97, 271, 20);
contentPane.add(tfCelsius);
tfCelsius.setColumns(10);
JButton btnUmrechnenF = new JButton("Umrechnen");
btnUmrechnenF.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (tfFahrenheit.isFocusOwner() == true) {
umrechnenInCelsius();
} else {
umrechnenInFahrenheit();
}
}
});
btnUmrechnenF.setBounds(310, 35, 114, 23);
contentPane.add(btnUmrechnenF);
JButton btnEnde = new JButton("Ende");
btnEnde.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
btnEnde.setBounds(310, 148, 114, 23);
contentPane.add(btnEnde);
}
private void umrechnenInFahrenheit() {
double fahrenheit, celsius;
celsius = Double.parseDouble(tfCelsius.getText());
fahrenheit = celsius * 1.8 + 32;
DecimalFormat f = new DecimalFormat("#0.00");
tfFahrenheit.setText(String.valueOf(fahrenheit));
tfFahrenheit.setText(f.format(fahrenheit));
tfCelsius.requestFocus();
tfCelsius.selectAll();
}
private void umrechnenInCelsius() {
double fahrenheit, celsius;
fahrenheit = Double.parseDouble(tfFahrenheit.getText());
celsius = (fahrenheit - 32) * 5 / 9;
DecimalFormat f = new DecimalFormat("#0.00");
tfCelsius.setText(String.valueOf(celsius));
tfCelsius.setText(f.format(celsius));
tfFahrenheit.requestFocus();
tfFahrenheit.selectAll();
}
}
Zuletzt bearbeitet: