Hola amigos:
Espero que esteis pasando buen verano.
Yo estoy empezando a trabajar con GUI, es muy interesante, pero ya me empiezan a surgir muchas dudas.
He hecho un programa de prueva, y me gustaria que lo vieseis.
Mi principal problema no es el event handling, ya que he empezado a utilizar la tecnica de las clases internas. Si no el mismo display de los objetos que se encuentran dentro del JFrame.
Aber si me explico, de momento yo he utilizado el BorderLayout, que me permite colocar las cosas en N,S,E,W,C(North,South...) pero porejemplo, cuando yo introduzco algun objeto, por ejemplo:
frame.getContentPane().add(BorderLayout.CENTER, textField);
Aqui lo que obtengo es que este objeto introducido en CENTER, me ocupa todo el frame(Si no hay mas objetos).
Me gustaria saber, como hacer los objetos mas pequeños,o vamos que no ocupen todo el container.
Bueno os mando la chapuzilla que he hecho.
un saludo.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class Temperatura {
private JFrame frame;
private JButton buttonCelsius;
private JButton buttonFarenheith;
private JTextField textField;
public Temperatura() {
frame = new JFrame("Konvertor Temperatura GUI");
buttonCelsius = new JButton("To Farenheith!");
buttonFarenheith = new JButton("To Celsius!");
textField = new JTextField();
frame.setLayout(new BorderLayout());
frame.setSize(300, 200);
frame.setLocation(400, 400);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.getContentPane().add(BorderLayout.SOUTH,buttonCelsius);
frame.getContentPane().add(BorderLayout.NORTH,buttonFarenheith);
frame.getContentPane().add(BorderLayout.CENTER,textField);
buttonCelsius.addActionListener(new ListenerCelsiusButton());
buttonFarenheith.addActionListener(new ListenerFarenheithButton());
}
public class ListenerCelsiusButton implements ActionListener {
private double f = 0;
@Override
public void actionPerformed(ActionEvent arg0) {
String s = textField.getText();
if(!s.equals("")) {
f = Double.parseDouble(s);
f = ( (f * 9.0) / 5.0) + 32;
textField.setText("In Farenhaith: " + f );
}
else {
textField.setText("Please enter a correct celsius Value");
}
}
}
public class ListenerFarenheithButton implements ActionListener {
private double c = 0;
public void actionPerformed(ActionEvent arg0) {
String s = textField.getText();
if(!s.equals("")) {
c = Double.parseDouble(s);
c = (c - 32) * (5.0 / 9.0);
textField.setText("In Celsius: " + c);
}
else {
textField.setText("Please enter a correct farenhaith Value");
}
}
}
}
public class Main {
public static void main(String[] args) {
@SuppressWarnings("unused")
Temperatura temp = new Temperatura();
}
}