• Miércoles 15 de Mayo de 2024, 22:33

Autor Tema:  Convetor de Temperaturas  (Leído 1733 veces)

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Convetor de Temperaturas
« en: Jueves 17 de Julio de 2008, 20:49 »
0
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();
   }

}

manix

  • Miembro MUY activo
  • ***
  • Mensajes: 203
  • Nacionalidad: cr
    • Ver Perfil
    • http://apuntes.delibertad.com
Re: Convetor de Temperaturas
« Respuesta #1 en: Jueves 17 de Julio de 2008, 20:55 »
0
hola

pues usando el border layout siempre los componentes que vayas poniendo iran acaparando todo el contendor, pues depende lo que vayas a hacer debes usar otros layout, incluso, puedes poner contenedores dentro de otros contenedores y asignarles un layout diferente a cada uno

saludos

SFRJ

  • Miembro MUY activo
  • ***
  • Mensajes: 115
    • Ver Perfil
Re: Convetor de Temperaturas
« Respuesta #2 en: Lunes 21 de Julio de 2008, 16:17 »
0
Entiendo.
Se me ocurrio la idea de al metodo setLayout() darle en el argumento null y darle un layout distinto a cada parte de mi interface grafico, ya que con null es de la unica manera que he conseguido mover los botones a mi gusto agrandando y moviendo.
Es esto aconsejable o estoy obligado a definir el layout del frame?

manix

  • Miembro MUY activo
  • ***
  • Mensajes: 203
  • Nacionalidad: cr
    • Ver Perfil
    • http://apuntes.delibertad.com
Re: Convetor de Temperaturas
« Respuesta #3 en: Lunes 21 de Julio de 2008, 17:04 »
0
hola

no hay ningun problema en hacerlo con parametro null, pero lo mas recomendable es que en la medida de lo posible uses un layout que se amolde a tus necesidades. Para que puedas acomodar los componentes a tu gusto y con el tamaño que desees puedes hacerlo con null o con absolelte layout

saludos