Cita:
Iniciado por chuidiang Hola:
pregunto por el trozo de código donde haces algo como ventana.getContentPane().add(textovolumen). ¿en qué clase está y cómo haces exactamente ese código?
Se bueno.
No, no tengo ningún codigo así. Más bien mira las clases completas como son:
----------------------------------------------------------------------------------------------
CLASE QUE DISPARA LA INTERFAZ GRAFICA E INICIA EL PROGRAMA:
public class MainClass
{
public static void main(String[] args)
{
Ventana ventana1 = new Ventana();
ventana1.VentanaGUI();
}
}
----------------------------------------------------------------------------------------------
CLASE QUE GENERA LA INTERFAZ GRAFICA
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
public class Ventana
{
JTextField textovolumen = new JTextField("");
JTextField textollenado = new JTextField("");
JFrame Ventana1;
public void Ventana1()
{
Ventana1 = new JFrame("TCVC [Tank Content Volume Calculator 1.0 by PuMa]");
Ventana1.setSize(640,480);
Ventana1.setResizable(false);
Ventana1.setLayout(null);
Ventana1.setLocationRelativeTo(null);
JLabel seleccion = new JLabel("Seleccione el tipo de tanque:");
seleccion.setSize(200,25);
seleccion.setVisible(true);
seleccion.setLocation(20,20);
final JComboBox TipoTanque = new JComboBox();
TipoTanque.setVisible(true);
TipoTanque.setSize(200,25);
TipoTanque.setLocation(20,40);
TipoTanque.addItem("Cilindro vertical");
TipoTanque.addItem("Cilindro horizontal");
TipoTanque.addItem("Tanque esférico");
TipoTanque.addItem("Tanque con corte salchichón");
JLabel seleccion2 = new JLabel("Ingrese los datos necesarios:");
seleccion2.setSize(200,20);
seleccion2.setVisible(true);
seleccion2.setLocation(20,70);
final JLabel radio = new JLabel("Radio:");
radio.setSize(50,20);
radio.setVisible(true);
radio.setLocation(20,90);
final JTextField textoradio = new JTextField("");
textoradio.setSize(50,20);
textoradio.setVisible(true);
textoradio.setLocation(70, 90);
final JLabel altura = new JLabel("Altura:");
altura.setSize(50,20);
altura.setVisible(true);
altura.setLocation(20,110);
final JTextField textoaltura = new JTextField("");
textoaltura.setSize(50,20);
textoaltura.setVisible(true);
textoaltura.setLocation(70, 110);
final JLabel profundidad = new JLabel("Profundidad:");
profundidad.setSize(80,20);
profundidad.setVisible(false);
profundidad.setLocation(130,90);
final JTextField textoprofundidad = new JTextField("");
textoprofundidad.setSize(50,20);
textoprofundidad.setVisible(false);
textoprofundidad.setLocation(210, 90);
final JLabel nivel = new JLabel("Nivel:");
nivel.setSize(40,20);
nivel.setVisible(true);
nivel.setLocation(170,110);
final JTextField textonivel = new JTextField("");
textonivel.setSize(50,20);
textonivel.setVisible(true);
textonivel.setLocation(210, 110);
JButton calcular = new JButton("Calcular volumen de tanque y nivel");
calcular.setSize(230,30);
calcular.setLocation(30, 150);
calcular.setVisible(true);
calcular.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Operaciones calculos = new Operaciones();
if (TipoTanque.getSelectedItem() == "Cilindro horizontal")
calculos.CilindroHorizontal(Double.parseDouble(Str ing.valueOf(textoprofundidad.getText())), Double.parseDouble(String.valueOf(textoradio.getTe xt())), Double.parseDouble(String.valueOf(textonivel.getTe xt())), 10);
}
}
);
JPanel separador = new JPanel();
separador.setSize(250,2);
separador.setLocation(20, 200);
separador.setBackground(Color.black);
JLabel volumen = new JLabel("Volumen del Tanque:");
volumen.setSize(120,20);
volumen.setVisible(true);
volumen.setLocation(20,230);
textovolumen.setSize(50,20);
textollenado.setVisible(true);
textovolumen.setLocation(150, 230);
JLabel llenado = new JLabel("Volumen llenado:");
llenado.setSize(120,20);
llenado.setVisible(true);
llenado.setLocation(20,250);
textollenado.setSize(50,20);
textollenado.setVisible(true);
textollenado.setLocation(150, 250);
TipoTanque.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if (TipoTanque.getSelectedItem() == "Cilindro vertical")
{
altura.setVisible(true);
textoaltura.setVisible(true);
profundidad.setVisible(false);
textoprofundidad.setVisible(false);
}
else
if (TipoTanque.getSelectedItem() == "Cilindro horizontal")
{
altura.setVisible(false);
textoaltura.setVisible(false);
profundidad.setVisible(true);
textoprofundidad.setVisible(true);
}
else
if (TipoTanque.getSelectedItem() == "Tanque esférico")
{
altura.setVisible(false);
textoaltura.setVisible(false);
profundidad.setVisible(false);
textoprofundidad.setVisible(false);
}
}
}
);
Ventana1.setVisible(true);
Ventana1.add(TipoTanque);
Ventana1.add(seleccion);
Ventana1.add(seleccion2);
Ventana1.add(radio);
Ventana1.add(textoradio);
Ventana1.add(altura);
Ventana1.add(textoaltura);
Ventana1.add(profundidad);
Ventana1.add(textoprofundidad);
Ventana1.add(nivel);
Ventana1.add(textonivel);
Ventana1.add(calcular);
Ventana1.add(separador);
Ventana1.add(volumen);
Ventana1.add(textovolumen);
Ventana1.add(llenado);
Ventana1.add(textollenado);
Ventana1.addWindowListener
(
new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
}
);
}
public void Resultado(double Volumen, double Llenado)
{
this.textovolumen.setText(Double.toString(Volumen) );
this.textollenado.setText(Double.toString(Llenado) );
System.out.println(Double.toString(Volumen));
System.out.println(Double.toString(Llenado));
}
}
----------------------------------------------------------------------------------------------
CLASE QUE HACE LAS OPERACIONES DE INTEGRACION NECESARIAS:
public class Operaciones
{
public void CilindroHorizontal(double Longitud, double Radio, double Nivel, int Iteraciones)
{
double L = Longitud; //Profundidad del tanque
double r = Radio; //Radio
double l = Nivel; //Nivel del tanque
double a = r - l; //Límite inferior
double b = r; //Límite superior
int n = Iteraciones; //Iteraciones
double h = (b - a)/n; //Ancho de rectángulo
double fx = 0; //Alto del rectángulo
double A = 0; //Area
double V = A*L; //Volumen
for (int i = 0; i < n; i = i +1)
{
fx = 2*Math.pow((Math.pow(r, 2) - Math.pow(a + i*h, 2)), 0.5); //Ecuación de la circunferencia: x = a + i*h
A = A + fx;
}
A = A*h*2;
V = A*L; //Volumen = Area x Profundidad
Ventana ventana = new Ventana();
ventana.Resultado(2*Math.PI*Math.pow(r, 2), V);
}
}
----------------------------------------------------------------------------------------------
Pero como te dije, lo único relevante son los fragmentos de código que te mostré, ambos al final de las dos clases. No genera ningún error, los valores llegan al método Resultado, pero los cambios en los campos no se ejecutan.