elenano2 escribió:Hola compañeros, estoy dándole vueltas para mejorar el programilla y se me ha ocurrido cargar todas las ventanas en un mismo sitio para que quede mejor visualmente.
La forma correcta de cargar las ventanas en un mismo "contender" sería hacerlo sobre un Jpanel? Es decir, según los botones que de va a aparecer una ventana diferente y quiero que se carguen en el mismo sitio.
Si no es con eso, con que debería hacerlo?
He leído varias cosas pero no me aclaran nada...
Muchas gracias por adelantado
elenano2 escribió:Hola compañeros, estoy dándole vueltas para mejorar el programilla y se me ha ocurrido cargar todas las ventanas en un mismo sitio para que quede mejor visualmente.
La forma correcta de cargar las ventanas en un mismo "contender" sería hacerlo sobre un Jpanel? Es decir, según los botones que de va a aparecer una ventana diferente y quiero que se carguen en el mismo sitio.
Si no es con eso, con que debería hacerlo?
He leído varias cosas pero no me aclaran nada...
Muchas gracias por adelantado
enano007jr escribió:elenano2 escribió:Hola compañeros, estoy dándole vueltas para mejorar el programilla y se me ha ocurrido cargar todas las ventanas en un mismo sitio para que quede mejor visualmente.
La forma correcta de cargar las ventanas en un mismo "contender" sería hacerlo sobre un Jpanel? Es decir, según los botones que de va a aparecer una ventana diferente y quiero que se carguen en el mismo sitio.
Si no es con eso, con que debería hacerlo?
He leído varias cosas pero no me aclaran nada...
Muchas gracias por adelantado
Creo que lo que quieres hacer se hace facilmente con un JTabbedPane
Aquí tienes un un ejemplo:
http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html
highfredo escribió:hola, estoy buscando a ver si existe algun tipo de datos que sea como una tabla
algo plan
o.put(coordenadaX, coordenadaY, valor)
o.get(coordenadaX, coordenadaY)
o.getRow(coordenadaY)
o.getColumn(coordenadaX)
litos001 escribió:highfredo escribió:hola, estoy buscando a ver si existe algun tipo de datos que sea como una tabla
algo plan
o.put(coordenadaX, coordenadaY, valor)
o.get(coordenadaX, coordenadaY)
o.getRow(coordenadaY)
o.getColumn(coordenadaX)
Lo mejor que puedes usar son los Map<K, V> que es especie de tabla con2 campos una clave y un valor, y luego puedes usar sobre ella los métodos put() y get() para meter y obtener valores.
Dentro de estos tienes los HashMap, los LinLinkedHashMap y los TreeMap. Busca info por net.
highfredo escribió:litos001 escribió:highfredo escribió:hola, estoy buscando a ver si existe algun tipo de datos que sea como una tabla
algo plan
o.put(coordenadaX, coordenadaY, valor)
o.get(coordenadaX, coordenadaY)
o.getRow(coordenadaY)
o.getColumn(coordenadaX)
Lo mejor que puedes usar son los Map<K, V> que es especie de tabla con2 campos una clave y un valor, y luego puedes usar sobre ella los métodos put() y get() para meter y obtener valores.
Dentro de estos tienes los HashMap, los LinLinkedHashMap y los TreeMap. Busca info por net.
habia pensado en hacer algo como Map<ParValores<K>, V> pero tendria que implementar mis propios metodos getRow y getColumn, y por eso he preguntado a ver si ya estaba implementado algo parecido.
ikiu escribió:Algún libro o sitio recomendable que hablen de estructuras de datos en java?
enano007jr escribió:ikiu escribió:Algún libro o sitio recomendable que hablen de estructuras de datos en java?
Aquí hay unos cuantos
http://www.etnassoft.com/biblioteca/categoria/libros_programacion/programacion_java/
litos001 escribió:Como podría hacer que un JPanel no pueda no pueda reconocer el click del ratón?? Le tengo asociado un MouseListener.
highfredo escribió:litos001 escribió:Como podría hacer que un JPanel no pueda no pueda reconocer el click del ratón?? Le tengo asociado un MouseListener.
simplemente no hagas nada dentro del mouse listener, renococer lo va a reconocer pero no hará nada
1 1
1 2
1 3
1 4
2 1
.
.
.
(y así más líneas)
BufferedReader br = new BufferedReader(new FileReader("f.txt"));
String[] line = br.readLine().split(" ");
Integer.parseInt(line[0])
Integer.parseInt(line[1])
elenano2 escribió:Hola gente! A ver si hay alguien que haya usado antes sqlite. Estoy intentando conectar/crear la base de datos con sqlite desde java, pero no se como hacerlo correctamente porque me sale siempre esto:
java.lang.ClassNotFoundException: org.sqlite.JDBC
Vamos, que no encuentra la clase, pero la tengo añadida en mis librerías. Aunque no me queda del todo claro porque hay que hacerlo así, pero si alguien lo a utilizado antes ser lo agradecería enormemente
Un saludo
enano007jr escribió:Done!
Bueno, me he picado y lo he hecho nunca había hecho nada con ficheros de texto a pelo en java y tenía curisidad.BufferedReader br = new BufferedReader(new FileReader("f.txt"));
String[] line = br.readLine().split(" ");
Integer.parseInt(line[0])
Integer.parseInt(line[1])
Falta meter 3 lineas en un bucle while pero eso te lo dejo a ti ya
Scanner sc = new Scanner(new File("f.txt"));
while(sc.hasNextLine()){
StringTokenizer st = new StringTokenizer(sc.nextLine());
while(st.hasMoreTokens()){
int aux = Integer.parseInt(st.nextToken());
...
}
}
VDF_Demon escribió:enano007jr escribió:Done!
Bueno, me he picado y lo he hecho nunca había hecho nada con ficheros de texto a pelo en java y tenía curisidad.BufferedReader br = new BufferedReader(new FileReader("f.txt"));
String[] line = br.readLine().split(" ");
Integer.parseInt(line[0])
Integer.parseInt(line[1])
Falta meter 3 lineas en un bucle while pero eso te lo dejo a ti ya
Aca otra solucion...Scanner sc = new Scanner(new File("f.txt"));
while(sc.hasNextLine()){
StringTokenizer st = new StringTokenizer(sc.nextLine());
while(st.hasMoreTokens()){
int aux = Integer.parseInt(st.nextToken());
...
}
}
enano007jr escribió:VDF_Demon escribió:Aca otra solucion...Scanner sc = new Scanner(new File("f.txt"));
while(sc.hasNextLine()){
StringTokenizer st = new StringTokenizer(sc.nextLine());
while(st.hasMoreTokens()){
int aux = Integer.parseInt(st.nextToken());
...
}
}
Oh el StringTokenizer mola No lo conocia
Sobre si usar Scanner o el BufferedReader hay discursiones en internet, basicamente dicen que usar el Scanner es mas facil.
Scanner sc = new Scanner(new File("f.txt"));
while (sc.hasNextInt()) {
int i = sc.nextInt();
}
highfredo escribió:
mas facil aunScanner sc = new Scanner(new File("f.txt"));
while (sc.hasNextInt()) {
int i = sc.nextInt();
}
pd: yo tampoco conocia Scanner, me encanta.
cracker_ct escribió:Tal vez, pero en fin, ya he solucionado esa cuestión, prefiero seguir la máxima esa de que si algo funciona, no lo toques xDDD
Ahora tengo una cuestión muchísimo más técnica y específica (para el proyecto fin de carrera): Estoy diseñando un "mapa de celdas", para utilizar el algoritmo A* de búsqueda de caminos. Ya he mapeado el terreno en un fichero de texto (para eso era la consulta de antes) y he marcado los nodos adyacentes de cada nodo. Ahora la cuestión es cómo poner si el nodo adyacente está en sentido ortogonal (horizontal o vertical) o si está en sentido diagonal. Tal vez sea algo muy técnico y específico, pero mi director de proyecto está de viaje...
Un saludo.
if(x1 != x2 && y1 != y2)
esOrtogonal;
else
esAdyacente
if(x1 == x2 || y1 == y2)
esAdyacente;
else
esOrtogonal
el_itinerante escribió:elenano2 escribió:Hola gente! A ver si hay alguien que haya usado antes sqlite. Estoy intentando conectar/crear la base de datos con sqlite desde java, pero no se como hacerlo correctamente porque me sale siempre esto:
java.lang.ClassNotFoundException: org.sqlite.JDBC
Vamos, que no encuentra la clase, pero la tengo añadida en mis librerías. Aunque no me queda del todo claro porque hay que hacerlo así, pero si alguien lo a utilizado antes ser lo agradecería enormemente
Un saludo
la tienes en el classpath????, en eclipse en las propiedades del proyecto en el classpath, lo añades y listo, en el resto de ides es parecido.
cuando hagas el deploy acuerdate de que tambien tienes que poner ese jar.Ademas tendras que tener cuidado con el archivo de la base de datos para que sea accesible, sino después de ese error te saldrá otro.
waylander escribió:Hola, a ver si me podeis ayudar:
Es posible con una jtable rellenar un espacio entero? el problema es que estoy haciendolo en eclipse y en la representacion que veo las celdas estan en la parte de arriba de layout, aunque tengo puesto "fill" como la alineacion vertical.
Edito: no os preocupeis, he borrado la jtable y he anidado un layout en otro, supongo que es así como se debe de hacer. La verdad es que no tengo ni idea jaja, estoy tratando de hacer un calendario en java para practicar.
import java.util.Vector;
//Podemos utilizar Collections.sort() para ordenar la lista abierta.
//Como la lista enlazada se compone de objetos Nodo, tenemos que
//implementar la interfaz Comparable<Nodo>
public class Nodo {
int id,f,g,h,x,y;
boolean procesado;
Vector<Nodo> adyacentes;
Nodo padre;
public Nodo(int id, int x, int y) {
this.id = id;
procesado = false;
adyacentes = new Vector<Nodo>(4,4);
padre = null;
this.x = x;
this.y = y;
}
public int getId() {
return id;
}
public void insertarAdyacente(Nodo nodo) {
adyacentes.add(nodo);
}
public Vector<Nodo> getAdyacentes() {
return adyacentes;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setProcesado() {
procesado = true;
}
public boolean getProcesado() {
return procesado;
}
public void setPadre(Nodo n) {
padre = n;
}
public void mostrarAdyacentes() {
System.out.print("Adyacentes: ");
for(int i = 0; i < adyacentes.size(); i++) {
if(adyacentes.elementAt(i).getId() != 0) {
System.out.print(adyacentes.elementAt(i).getId() + " ");
}
}
System.out.println();
}
public void mostrarCoordenadas() {
System.out.println("Coordenadas: " + x + " " + y);
}
}
import java.util.LinkedList;
public class ListaEnlazada extends LinkedList<Nodo> {
public ListaEnlazada() {
super();
}
public void mostrar() {
for(Nodo n : this) {
System.out.println(n.getId());
}
}
//Este método nos dice si la lista contiene el id pasado
public boolean contieneId(int id) {
for(Nodo n : this) {
if(n.getId() == id) {
return true;
}
}
return false;
}
}
cracker_ct escribió:Hola gente. Esta vez vengo con una duda "complicada". Estoy haciendo cosas del proyecto fin de carrera, y necesito ordenar una lista enlazada. Tengo estas clases:import java.util.Vector;
//Podemos utilizar Collections.sort() para ordenar la lista abierta.
//Como la lista enlazada se compone de objetos Nodo, tenemos que
//implementar la interfaz Comparable<Nodo>
public class Nodo {
int id,f,g,h,x,y;
boolean procesado;
Vector<Nodo> adyacentes;
Nodo padre;
public Nodo(int id, int x, int y) {
this.id = id;
procesado = false;
adyacentes = new Vector<Nodo>(4,4);
padre = null;
this.x = x;
this.y = y;
}
public int getId() {
return id;
}
public void insertarAdyacente(Nodo nodo) {
adyacentes.add(nodo);
}
public Vector<Nodo> getAdyacentes() {
return adyacentes;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setProcesado() {
procesado = true;
}
public boolean getProcesado() {
return procesado;
}
public void setPadre(Nodo n) {
padre = n;
}
public void mostrarAdyacentes() {
System.out.print("Adyacentes: ");
for(int i = 0; i < adyacentes.size(); i++) {
if(adyacentes.elementAt(i).getId() != 0) {
System.out.print(adyacentes.elementAt(i).getId() + " ");
}
}
System.out.println();
}
public void mostrarCoordenadas() {
System.out.println("Coordenadas: " + x + " " + y);
}
}import java.util.LinkedList;
public class ListaEnlazada extends LinkedList<Nodo> {
public ListaEnlazada() {
super();
}
public void mostrar() {
for(Nodo n : this) {
System.out.println(n.getId());
}
}
//Este método nos dice si la lista contiene el id pasado
public boolean contieneId(int id) {
for(Nodo n : this) {
if(n.getId() == id) {
return true;
}
}
return false;
}
}
Utilizo una clase ListaEnlazada porque quiero usar una lista enlazada pero quiero aparte poder realizar ciertas operaciones especiales, por eso hago que herede de LinkedList<Nodo>. Hay ocasiones en el programa en que tengo que ordenar la lista enlazada (compuesta por objetos Nodo) mediante su campo id, de menor a mayor (el id más bajo es el primero de la lista, el id más alto es el último de la lista, y en el momento en que se añada un nuevo nodo reordenar la lista para que siga manteniendo ese orden).
Investigando por ahí he visto que se puede hacer mediante la interfaz Comparable, pero no me aclaro. Creo que tengo que hacer que la clase Nodo implemente esa interfaz, pero no tengo ni idea de cómo abordar el método compareTo(Object arg0, Object arg1).
Alguna ayudita por favor...?
EDITO: Cuestión adicional... Veo que la clase LinkedList tiene un método addAll para añadirle un conjunto de objetos. Ese objeto puede ser un Vector<Nodo> que contenga esa lista de nodos?
cracker_ct escribió:Pensaba que con eso se entendería, fallo mío xD
Pues lo que pretendo es programar el algoritmo A*. Por eso cada nodo tiene un padre, tiene un conjunto de adyacentes, etc... El tema del vector de 4 elementos es porque en un principio lo hice de 0 elementos y que incrementara de 1 en 1, pero el profesor me dijo que nanay, que eso es muy ineficiente. Lo creo de un poco más de tamaño y si sobra pues a aguantarse... xD
Aquí lo explican muy bien: http://www.policyalmanac.org/games/articulo1.htm
cracker_ct escribió:Hola gente. Esta vez vengo con una duda "complicada". Estoy haciendo cosas del proyecto fin de carrera, y necesito ordenar una lista enlazada. Tengo estas clases:import java.util.Vector;
//Podemos utilizar Collections.sort() para ordenar la lista abierta.
//Como la lista enlazada se compone de objetos Nodo, tenemos que
//implementar la interfaz Comparable<Nodo>
public class Nodo {
int id,f,g,h,x,y;
boolean procesado;
Vector<Nodo> adyacentes;
Nodo padre;
public Nodo(int id, int x, int y) {
this.id = id;
procesado = false;
adyacentes = new Vector<Nodo>(4,4);
padre = null;
this.x = x;
this.y = y;
}
public int getId() {
return id;
}
public void insertarAdyacente(Nodo nodo) {
adyacentes.add(nodo);
}
public Vector<Nodo> getAdyacentes() {
return adyacentes;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setProcesado() {
procesado = true;
}
public boolean getProcesado() {
return procesado;
}
public void setPadre(Nodo n) {
padre = n;
}
public void mostrarAdyacentes() {
System.out.print("Adyacentes: ");
for(int i = 0; i < adyacentes.size(); i++) {
if(adyacentes.elementAt(i).getId() != 0) {
System.out.print(adyacentes.elementAt(i).getId() + " ");
}
}
System.out.println();
}
public void mostrarCoordenadas() {
System.out.println("Coordenadas: " + x + " " + y);
}
}import java.util.LinkedList;
public class ListaEnlazada extends LinkedList<Nodo> {
public ListaEnlazada() {
super();
}
public void mostrar() {
for(Nodo n : this) {
System.out.println(n.getId());
}
}
//Este método nos dice si la lista contiene el id pasado
public boolean contieneId(int id) {
for(Nodo n : this) {
if(n.getId() == id) {
return true;
}
}
return false;
}
}
Utilizo una clase ListaEnlazada porque quiero usar una lista enlazada pero quiero aparte poder realizar ciertas operaciones especiales, por eso hago que herede de LinkedList<Nodo>. Hay ocasiones en el programa en que tengo que ordenar la lista enlazada (compuesta por objetos Nodo) mediante su campo id, de menor a mayor (el id más bajo es el primero de la lista, el id más alto es el último de la lista, y en el momento en que se añada un nuevo nodo reordenar la lista para que siga manteniendo ese orden).
Investigando por ahí he visto que se puede hacer mediante la interfaz Comparable, pero no me aclaro. Creo que tengo que hacer que la clase Nodo implemente esa interfaz, pero no tengo ni idea de cómo abordar el método compareTo(Object arg0, Object arg1).
Alguna ayudita por favor...?
EDITO: Cuestión adicional... Veo que la clase LinkedList tiene un método addAll para añadirle un conjunto de objetos. Ese objeto puede ser un Vector<Nodo> que contenga esa lista de nodos?
tebilon escribió:Hola a todos. Estoy con mis primeros pinitos con Java. A ver si me podeis ayudar.
El caso es que tengo una clase Agenda, que está compuesta por objetos de la clase Contacto, y las clases Persona y Empresa que heredan de la clase Contacto. Me gustaría hacer que la agenda se pudiese escribir en un fichero txt y también leer de ese fichero txt. ¿Cual creeis que es la forma correcta de hacer esto? ¿Habría que indicar en el txt si cada contacto es Empresa o Persona o se podría hacer de otra manera?
Gracias por vuestra ayuda y perdonad mi torpeza.
Un saludo.
highfredo escribió:
lo mejor es generar un fichero xml o json (que no es mas que un txt)
busca en google "pojo to json" o "pojo to xml" para escribir en el fichero y "json to pojo" o "xml to pojo" para leer.
un pequeño tutorial para json: http://www.mkyong.com/java/how-to-conve ... n-jackson/
tambien podrias usar filewrite para escribir y Scanner para leer/parsear el fichero, pero no te lo recomiendo
cracker_ct escribió:Tal vez, pero en fin, ya he solucionado esa cuestión, prefiero seguir la máxima esa de que si algo funciona, no lo toques xDDD
Hola gente. Esta vez vengo con una duda "complicada". Estoy haciendo cosas del proyecto fin de carrera, y necesito ordenar una lista enlazada. Tengo estas clases:
Código: Seleccionar todo
import java.util.Vector;
//Podemos utilizar Collections.sort() para ordenar la lista abierta.
//Como la lista enlazada se compone de objetos Nodo, tenemos que
//implementar la interfaz Comparable<Nodo>
public class Nodo {
int id,f,g,h,x,y;
boolean procesado;
Vector<Nodo> adyacentes;
Nodo padre;
public Nodo(int id, int x, int y) {
this.id = id;
procesado = false;
adyacentes = new Vector<Nodo>(4,4);
padre = null;
this.x = x;
this.y = y;
}
public int getId() {
return id;
}
public void insertarAdyacente(Nodo nodo) {
adyacentes.add(nodo);
}
public Vector<Nodo> getAdyacentes() {
return adyacentes;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setProcesado() {
procesado = true;
}
public boolean getProcesado() {
return procesado;
}
public void setPadre(Nodo n) {
padre = n;
}
public void mostrarAdyacentes() {
System.out.print("Adyacentes: ");
for(int i = 0; i < adyacentes.size(); i++) {
if(adyacentes.elementAt(i).getId() != 0) {
System.out.print(adyacentes.elementAt(i).getId() + " ");
}
}
System.out.println();
}
public void mostrarCoordenadas() {
System.out.println("Coordenadas: " + x + " " + y);
}
}
Código: Seleccionar todo
import java.util.LinkedList;
public class ListaEnlazada extends LinkedList<Nodo> {
public ListaEnlazada() {
super();
}
public void mostrar() {
for(Nodo n : this) {
System.out.println(n.getId());
}
}
//Este método nos dice si la lista contiene el id pasado
public boolean contieneId(int id) {
for(Nodo n : this) {
if(n.getId() == id) {
return true;
}
}
return false;
}
}
Utilizo una clase ListaEnlazada porque quiero usar una lista enlazada pero quiero aparte poder realizar ciertas operaciones especiales, por eso hago que herede de LinkedList<Nodo>. Hay ocasiones en el programa en que tengo que ordenar la lista enlazada (compuesta por objetos Nodo) mediante su campo id, de menor a mayor (el id más bajo es el primero de la lista, el id más alto es el último de la lista, y en el momento en que se añada un nuevo nodo reordenar la lista para que siga manteniendo ese orden).
Investigando por ahí he visto que se puede hacer mediante la interfaz Comparable, pero no me aclaro. Creo que tengo que hacer que la clase Nodo implemente esa interfaz, pero no tengo ni idea de cómo abordar el método compareTo(Object arg0, Object arg1).
Alguna ayudita por favor...?
EDITO: Cuestión adicional... Veo que la clase LinkedList tiene un método addAll para añadirle un conjunto de objetos. Ese objeto puede ser un Vector<Nodo> que contenga esa lista de nodos?
Peklet escribió:Hoy en clase he hecho un virus lo proPAGARE POR LOS INTERNETS ES EL FIN DE LA ERA DE LA INFORMATICA JAK JAK JAK JAKEn realidad era una linea de codigo que se ejecutaba en bucle sin fin, y no se podía cerrar el programa xD Pero he tenido una bonita excusa para exclamar en voz alta OH MIERDA HE DIVIDIDO POR CERO xDD
tebilon escribió:highfredo escribió:
lo mejor es generar un fichero xml o json (que no es mas que un txt)
busca en google "pojo to json" o "pojo to xml" para escribir en el fichero y "json to pojo" o "xml to pojo" para leer.
un pequeño tutorial para json: http://www.mkyong.com/java/how-to-conve ... n-jackson/
tambien podrias usar filewrite para escribir y Scanner para leer/parsear el fichero, pero no te lo recomiendo
Gracias por tu ayuda, pero independientemente de si se hace con un txt o con un xml lo que me gustaría saber es la forma correcta de indicarle al leer el fichero si el Contacto es una Persona o de una Empresa. Gracias.
Un saludo.
Contacto:nombre,
Tipo:empresa,
Direccion:calle no existe 123;
Contacto:nombre2,
Tipo:persona,
Direccion:calle imaginaria 69;
tebilon escribió:Hola a todos. Estoy con mis primeros pinitos con Java. A ver si me podeis ayudar.
El caso es que tengo una clase Agenda, que está compuesta por objetos de la clase Contacto, y las clases Persona y Empresa que heredan de la clase Contacto. Me gustaría hacer que la agenda se pudiese escribir en un fichero txt y también leer de ese fichero txt. ¿Cual creeis que es la forma correcta de hacer esto? ¿Habría que indicar en el txt si cada contacto es Empresa o Persona o se podría hacer de otra manera?
Gracias por vuestra ayuda y perdonad mi torpeza.
Un saludo.