Duda sobre Java

he estado aciendo una especie de aplicacion muy simple en java y he creado estas 2 clases , que por cierto estan bien:

esta es la clase Catalogo




package proyecto;

public class Catalogo {
private float pConvertidor,
pHub,
pMemoria,
pTarjeta;


public Catalogo() {
pConvertidor= 15F;
pHub= 13.50F;
pMemoria = 40F;
pTarjeta = 50.75F;
}

public float getPConvertidor(){
return pConvertidor;
}
public float getPHub(){
return pHub;
}
public float getPMemoria(){
return pMemoria;
}
public float getPTarjeta(){
return pTarjeta;
}

}





esta es la clase Pedido
package proyecto;

public class Pedido {
private int convertidores,
hubs,
memorias,
tarjetas;
private Catalogo catalogo;

public Pedido(Catalogo catalogo) {
convertidores=0;
hubs=0;
memorias=0;
tarjetas=0;
this.catalogo=catalogo;
}

public void setConvertidores(int convertidores) {
this.convertidores=convertidores;
}

public void setHubs(int hubs) {
this.hubs=hubs;
}

public void setMemorias(int memorias) {
this.memorias=memorias;
}

public void setTarjetas(int tarjetas) {

}

public float calcularTotalSinIva(){

return (convertidores*catalogo.getPConvertidor())+(hubs*catalogo.getPHub())+(memorias*catalogo.getPMemoria())+(tarjetas*catalogo.getPTarjeta());
}

public float calcularTotalConIva(){
return (float)(calcularTotalSinIva()+(calcularTotalSinIva()*0.16));
}

public boolean unidadesNegativas(int unidades) {
return (unidades<0);
}
}



Esas 2 clases no fallan , pero esta me falla en la linea que señalo , es la clase Marco con la interface de la aplicación:

package proyecto;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
*

Título:


*

Descripción:


*

Copyright: Copyright (c) 2007


*

Empresa:


* @author sin atribuir
* @version 1.0
*/

public class Marco extends JFrame {
Catalogo Catalogo=new Catalogo();
Pedido pedido=new Pedido(); <-----------FALLA AHÍ
JPanel contentPane;
JTextField TXTUnidades1 = new JTextField();
JTextField TXTUnidades2 = new JTextField();
JTextField TXTUnidades3 = new JTextField();
JTextField TXTUnidades4 = new JTextField();
JButton BTTotal = new JButton();
JTextField BTPreciofinal = new JTextField();
JTextArea TXTUnidades = new JTextArea();
JTextArea TXTPreciofinal = new JTextArea();
JTextArea TXTAccesorios = new JTextArea();
JTextArea TXTConvertidorusb = new JTextArea();
JTextArea TXTHub4puertos = new JTextArea();
JTextArea TXTMemoriausb2gigas = new JTextArea();
JLabel ETIquetaimagen = new JLabel();
JTextArea TXTTarjetapci = new JTextArea();
JTextArea TXTPrecioconvertidor = new JTextArea();
JTextArea TXTPreciohub = new JTextArea();
JTextArea TXTPreciomemoria = new JTextArea();
JTextArea TXTPreciotarjetapci = new JTextArea();

//Construir el marco
public Marco() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

//Inicialización de componentes
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
TXTUnidades1.setEnabled(true);
TXTUnidades1.setEditable(true);
TXTUnidades1.setText("0");
TXTUnidades1.setBounds(new Rectangle(332, 117, 25, 20));
TXTUnidades1.addFocusListener(new Marco_TXTUnidades1_focusAdapter(this));
contentPane.setLayout(null);
this.setSize(new Dimension(400, 300));
this.setTitle("Título del marco");
TXTUnidades2.setText("0");
TXTUnidades2.setBounds(new Rectangle(331, 145, 25, 20));
TXTUnidades3.setText("0");
TXTUnidades3.setBounds(new Rectangle(332, 172, 25, 20));
TXTUnidades4.setText("0");
TXTUnidades4.setBounds(new Rectangle(333, 200, 25, 20));
BTTotal.setBounds(new Rectangle(224, 254, 70, 27));
BTTotal.setText("Total");
BTTotal.addActionListener(new Marco_BTTotal_actionAdapter(this));
BTPreciofinal.setEditable(false);
BTPreciofinal.setText("");
BTPreciofinal.setBounds(new Rectangle(302, 256, 66, 25));
contentPane.setBackground(Color.white);
TXTUnidades.setFont(new java.awt.Font("Arial", 1, 12));
TXTUnidades.setText("Unidades");
TXTUnidades.setBounds(new Rectangle(315, 73, 70, 20));
TXTPreciofinal.setFont(new java.awt.Font("Arial", 1, 12));
TXTPreciofinal.setText("Precio Final");
TXTPreciofinal.setBounds(new Rectangle(237, 73, 70, 17));
TXTAccesorios.setFont(new java.awt.Font("Arial", 1, 19));
TXTAccesorios.setForeground(new Color(255, 0, 90));
TXTAccesorios.setCaretColor(Color.black);
TXTAccesorios.setText("PC Accesorios");
TXTAccesorios.setBounds(new Rectangle(155, 22, 231, 37));
TXTConvertidorusb.setFont(new java.awt.Font("Arial", 1, 12));
TXTConvertidorusb.setText("Convertidor USB Bluetooth:");
TXTConvertidorusb.setBounds(new Rectangle(35, 118, 161, 19));
TXTHub4puertos.setBounds(new Rectangle(37, 145, 161, 19));
TXTHub4puertos.setText("Hub 4 puertos USB:");
TXTHub4puertos.setFont(new java.awt.Font("Arial", 1, 12));
TXTMemoriausb2gigas.setFont(new java.awt.Font("Arial", 1, 12));
TXTMemoriausb2gigas.setText("Memoria USB 2Gb:");
TXTMemoriausb2gigas.setBounds(new Rectangle(36, 174, 161, 19));
ETIquetaimagen.setBounds(new Rectangle(6, 9, 117, 94));
ETIquetaimagen.setIcon(new ImageIcon("imagenes/logotipo.jpg"));
TXTTarjetapci.setBounds(new Rectangle(37, 204, 175, 19));
TXTTarjetapci.setText("Tarjeta PCI TV / Radio / Video:");
TXTTarjetapci.setFont(new java.awt.Font("Arial", 1, 12));
TXTPrecioconvertidor.setFont(new java.awt.Font("Arial", 1, 12));
TXTPrecioconvertidor.setText("15€");
TXTPrecioconvertidor.setBounds(new Rectangle(257, 117, 48, 19));
TXTPreciohub.setBounds(new Rectangle(253, 141, 48, 19));
TXTPreciohub.setText("13,50€");
TXTPreciohub.setFont(new java.awt.Font("Arial", 1, 12));
TXTPreciomemoria.setBounds(new Rectangle(251, 173, 48, 19));
TXTPreciomemoria.setText("40€");
TXTPreciomemoria.setFont(new java.awt.Font("Arial", 1, 12));
TXTPreciotarjetapci.setBounds(new Rectangle(252, 197, 48, 19));
TXTPreciotarjetapci.setText("50,75€");
TXTPreciotarjetapci.setFont(new java.awt.Font("Arial", 1, 12));
TXTPreciotarjetapci.setAlignmentX((float) 0.5);
contentPane.add(BTTotal, null);
contentPane.add(BTPreciofinal, null);
contentPane.add(TXTPreciofinal, null);
contentPane.add(TXTUnidades, null);
contentPane.add(ETIquetaimagen, null);
contentPane.add(TXTAccesorios, null);
contentPane.add(TXTUnidades4, null);
contentPane.add(TXTUnidades3, null);
contentPane.add(TXTUnidades2, null);
contentPane.add(TXTUnidades1, null);
contentPane.add(TXTConvertidorusb, null);
contentPane.add(TXTHub4puertos, null);
contentPane.add(TXTMemoriausb2gigas, null);
contentPane.add(TXTTarjetapci, null);
contentPane.add(TXTPrecioconvertidor, null);
contentPane.add(TXTPreciohub, null);
contentPane.add(TXTPreciotarjetapci, null);
contentPane.add(TXTPreciomemoria, null);

}

//Modificado para poder salir cuando se cierra la ventana
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}

void BTTotal_actionPerformed(ActionEvent e) {
int n=Integer.parseInt(TXTUnidades1.getText());
pedido.setConvertidores(n);
n=Integer.parseInt(TXTUnidades2.getText());
pedido.setHubs(n);
float BTTotal=pedido.calcularTotalSinIva();
BTPreciofinal.setText(String.valueOf(BTTotal));

}

void TXTUnidades1_focusLost(FocusEvent e) {
int unidades=Integer.parseInt(TXTUnidades1.getText());
if (pedido.unidadesNegativas(unidades));
TXTUnidades1.setText("0");
}
}

class Marco_BTTotal_actionAdapter implements java.awt.event.ActionListener {
Marco adaptee;

Marco_BTTotal_actionAdapter(Marco adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.BTTotal_actionPerformed(e);
}
}

class Marco_TXTUnidades1_focusAdapter extends java.awt.event.FocusAdapter {
Marco adaptee;

Marco_TXTUnidades1_focusAdapter(Marco adaptee) {
this.adaptee = adaptee;
}
public void focusLost(FocusEvent e) {
adaptee.TXTUnidades1_focusLost(e);
}
}

para mi que no se debe de colocar esa linea ahi , aver si alguien puede ayudarme,gracias
Si mal no me equivoco, si te fijas en el constructor de la clase Pedido

public Pedido(Catalogo catalogo) {
convertidores=0;
hubs=0;
memorias=0;
tarjetas=0;
this.catalogo=catalogo;
}

le tienes que pasar el catalogo, sino, obviamente el constructor te dara un error.

Eso si no me equivoco, hace tiempo que no me pego con Java.

Salu2
eso es lo que tengo hecho pero da error :-( y si quito la linea esa del error me da otros errores abajo cuando nombre pedido.
llibertariu escribió:eso es lo que tengo hecho pero da error :-( y si quito la linea esa del error me da otros errores abajo cuando nombre pedido.
Adjunta si eso el código en un rar y miro a ver si saco por que es ;)

P.D: Si lo tienes en proyecto de algun ide y lo adjuntas asi mejor :P
lo tengo en un proyecto creado con jbuilder ahora te lo paso.
llibertariu escribió:lo tengo en un proyecto creado con jbuilder ahora te lo paso.
Ok, mejor, que en este pc solo tengo el JBuilder
bueno aqui esta , gracias
llibertariu escribió:bueno aqui esta , gracias

Vale, es una chorrada XD te vas a tirar de los pelos XD

En la línea 18 de la clase Marco, te falta esto:

Catalogo Catalogo=new Catalogo();
Pedido pedido=new Pedido(Catalogo);

Lo de negrita, y tiene que ir debajo de Catalogo, que si no el parámetro que le pasas al Constructor no lo "ve"

Una recomendación, no utilices el editor del jBuilder es una caca XD para cosas pequeñas es mejor hacerlo a pelo ;)

Pasate por aqui ;)

http://www.elotrolado.net/showthread.php?s=&threadid=420962&highlight=java
joer vaya chorrada XD muchas gracias tio yo ya estaba to coiendome el tarro.No sabia que hubiera un hilo oficial , ahora me paso por alli. XD [beer]
8 respuestas