|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - mabrev
51
« en: Lunes 16 de Febrero de 2004, 09:01 »
Hola:
Estoy trabajando con el JBuilder Enterprise Edition v9, he construido varios paquetes para utilizarlos dentro de mis proyectos como librerias. Para crear las librerías lo hago de la siguiente manera: Proyecto -> Propiedades de proyecto -> Bibliotecas necesarias -> Añadir -> Nuevo Una vez aquí, selecciono alguno de los archivos .jar y creo la librería. Para indicar qué librerías utiliza cada proyecto utilizo: Proyecto -> Propiedades de proyecto -> Bibliotecas necesarias, y aquí selecciono las necesarias de entre las que he creado anteriormente.
Lo que me gustaría saber es ¿qué pasos debo seguir si quiero modificar alguna de las librerías? He intentado lo siguiente: 1.- En Proyecto -> Propiedades de Proyecto -> Bibliotecas necesarias, elimino la biblioteca que quiero actualizar. 2.- Modifico los ficheros fuente de la librería y vuelvo a crear el archivo .jar. 3.- En Proyecto -> Propiedades de Proyecto -> Bibliotecas necesarias, vuelvo a añadir la biblioteca. Pero nada, la biblioteca no se actualiza. Tal vez haya que eliminar la biblioteca de alguna forma y volverla a crear, pero no he encontrado ninguna opción que me permita borrarla.
Alguien puede decirme qué es lo que falta para poder actualizar las librerías.
Muchas gracias por adelantado.
52
« en: Miércoles 11 de Febrero de 2004, 11:41 »
Hola:
Pues nada, al final en vez de complicarme más la vida, he recurrido al método más rápido (aunque no me guste demasiado). He dejado el contenido de la celda como estaba, apareciendo puntos suspensivos al final de aquellas celdas donde no entra el texto, y he añadido un ToolTipText que muestra el texto completo cuando se situa el ratón sobre la celda.
Saludos y muchas gracias por la ayuda.
53
« en: Miércoles 11 de Febrero de 2004, 11:37 »
Muchas gracias por la ayuda.
Saludos
54
« en: Lunes 9 de Febrero de 2004, 10:40 »
Hola:
Alguien tiene algun tutorial, manual o similar de cómo crear ayudas para aplicaciones hechas con java??
He encontrado algo sobre JavaHelp, pero todo en inglés, si alguien sabe dónde puedo encontrar algo en español, le agradecería mucho que me lo dijera.
Saludos y muchas gracias.
55
« en: Viernes 6 de Febrero de 2004, 08:49 »
Hola:
Estoy trabajando con una JTable, y resulta que el contenido de algunas celdas es mayor que el tamaño de las mismas. Teniendo en cuenta que las celdas de la tabla no son editables, me gustaría saber si hay alguna forma de que cuando el usuario pulse el botón izquierdo del ratón sobre la celda, se le muestre el contenido completo de la misma (teniendo en cuenta que se seleccionan filas completas no celdas individuales).
Muchas gracias por adelantado.
56
« en: Viernes 6 de Febrero de 2004, 08:31 »
Hola: Por lo que he entendido yo, lo que estás buscando es un bucle en el que permanezcas hasta que se pulse el número adecuado, no?? Eso sería así: #include <stdio.h> int main() { int tecla; scanf("%d", &tecla); while (tecla<0 || tecla>7 scanf("%d", &tecla); //Aquí se llega cuando se pulsa una de las teclas que quieres //Así que puedes continuar con lo que haga el programa }
Espero que te sirva. Saludos
57
« en: Jueves 5 de Febrero de 2004, 20:59 »
Hay dos formas de hacer eso.
La primera y mas facil consiste en tratar los textos como html. Es decir, supongamos que tu añades en una celda la cadena "Este es un texto de prueba" y no sale entera en la columna. Pues en vez de eso, añades la cadena "<html>Este es un texto de prueba</html>" y automaticamente la mostrara en las lineas que necesite.
Hola: He intentado lo que me dijiste de tratar los textos como html, pero en vez de utilizar las filas que necesite para mostrarlo, ahora en vez de mostrar "Este es un tex...", solo muestra las palabras que entran enteras en la primera línea y pasa de las demás, es decir, aparece "Este es un". Alguna idea de por qué puede pasar ésto. Saludos y muchas gracias.
58
« en: Jueves 5 de Febrero de 2004, 20:27 »
Hola: Si no recuerdo mal la función clrscr() no funciona en entornos Unix, a falta de una solución más elegante puedes utilizar: Espero que te sea de ayuda. Saludos.
59
« en: Jueves 5 de Febrero de 2004, 20:22 »
Hola:
Al fin lo he conseguido. El problema estaba en que el editor no le comunicaba a la JTable que había finalizado la edición, así que sin retornar el valor, lo cancelaba y comenzaba con la edición de la siguiente celda. Así que para que el editor funcione hay que implementar los metodos de añadir CellEditorListener y avisar a los sucriptores cuando se termine la edicion.
Saludos y muchas gracias por la ayuda.
60
« en: Jueves 5 de Febrero de 2004, 14:43 »
Hola: No he podido mirarlo en profundidad, pero a simple vista me ha parecido observar lo siguiente: En la tabla no se puede almacenar cualquier tipo de datos, por lo que parece vas a utilizar enteros, así que declaralá como , y no es necesario que almacenes los nombres de los equipos en la fila y columna 0, es suficiente con que pongas en un comentario la correspondencia, o si necesitas almacenarlo, utiliza un array typedef equipo char[15]; equipo correspondencia[4]; int i; correspondencia[0] = "España"; correspondencia[1] = "Francia"; correspondencia[2] = "Gran Bretaña"; correspondencia[3] = "Italia";
Otra cosilla, al comparar el contenido de team1 y team2 utiliza la función strcmp(cadena1, cadena2) que es la forma adecuada para comparar cadenas. Además si has almacenado las correspondencias puedes ahorrarte líneas de código haciendo: i = 0; encontrado = 0; while (i<4 && !encontrado) { if (strcmp(team, correspondencia[i])==0) encontrado = 1; //Tienes almacenado en i el número correspondiente al equipo else i++; }
Espero que te sirva. Saludos
61
« en: Miércoles 4 de Febrero de 2004, 22:06 »
Muchas gracias por el consejo, voy a probarlo y ya te comentaré.
Saludos
62
« en: Miércoles 4 de Febrero de 2004, 12:55 »
Hola:
Una posible solución es que declares las variables dentro de la función menú en vez de en main, ya que parece que sólo vas a usarlas dentro de menú, de no ser así, otra cosa que puedes hacer es declarar las variables A, B y C como globales.
Espero que te sirva.
Saludos.
63
« en: Miércoles 4 de Febrero de 2004, 08:33 »
Hola: Muchas gracias por la ayuda. Al final he conseguido que me asocie un render a cada tipo, utilizando un modelo propio que hereda de DefaultTableModel, utilizando la siguiente función para proporcionar la clase de datos de la columna: public Class getColumnClass(int col) { return getValueAt(0, col).getClass(); }
Así ya me reconoce los tipos de cada columna y puedo utilizar tabla.setDefaultRenderer(String.class, tr);
Saludos
64
« en: Miércoles 4 de Febrero de 2004, 08:28 »
Hola:
Muchas gracias por la ayuda, a ver si tengo suerte y encuentro lo que busco.
Saludos.
65
« en: Miércoles 4 de Febrero de 2004, 08:24 »
Hola:
Sí que se pueden introducir funciones dentro de otras, sobretodo si quieres que ciertas funciones sean solo visibles dentro de una función determinada (como las variables locales). Tu profesor tal vez ha querido decir que no se debe, ya que puede dificultar el posterior mantenimiento de la aplicación.
Saludos.
66
« en: Martes 3 de Febrero de 2004, 14:58 »
Hola: Estoy empezando a utilizar JTable, uso una para mostrar unos datos almacenados en una BD, y una de las columnas contiene fechas. A la hora de modificar una fecha, quiero que aparezca un calendario que permita seleccionar el nuevo valor, para ello he creado un editor específico. Al seleccionar la fecha y modificarla parece que va todo bien, pero al seleccionar otra celda, la que había sido modificada vuelve a su valor actual. Adjunto el código del render y del editor de la celda a ver si alguien puede echarme una mano. Editor: import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; import calendario.*; public class EditorFecha extends JButton implements TableCellEditor { private Fecha fechaActual = null; private boolean editable; private boolean edicionFinalizada; public EditorFecha(boolean editable) { super(""); this.editable = editable; this.setBorderPainted(false); this.setMargin(new Insets(0,0,0,0)); ActionListener okListener = new ActionListener() { public void actionPerformed(ActionEvent e) { mostrarVentana(); } }; this.addActionListener(okListener); } public Component getTableCellEditorComponent(JTable tabla, Object valor, boolean isSelected, int fila, int columna) { this.setBackground(tabla.getBackground()); fechaActual = (Fecha) valor; this.setText(fechaActual.getFecha()); return this; } public Object getCellEditorValue() { return fechaActual; } public boolean isCellEditable(EventObject e) { return editable; } public boolean shouldSelectCell(EventObject e) { return true; //La celda que está siendo editada debe estar seleccionada } public boolean stopCellEditing() { return edicionFinalizada; } public void cancelCellEditing() {} public void addCellEditorListener(CellEditorListener cel) {} public void removeCellEditorListener(CellEditorListener cel) {} public void setCellEditable(boolean editable) { this.editable = editable; } private void setEdicionFinalizada() { edicionFinalizada = true; } private void establecerFecha(String fecha) { fechaActual = new Fecha(fecha); this.setText(fecha); } private void mostrarVentana() { edicionFinalizada = false; final Calendario calendario = new Calendario(); final JFrame ventana = new JFrame("Seleccione una fecha"); JPanel botonera = new JPanel(); JButton aceptarB = new JButton("Aceptar"); JButton cancelarB = new JButton("Cancelar"); JLabel espacio = new JLabel(""); ActionListener aceptarListener = new ActionListener() { public void actionPerformed(ActionEvent e) { establecerFecha(calendario.getFecha()); setEdicionFinalizada(); ventana.dispose(); } }; aceptarB.addActionListener(aceptarListener); ActionListener cancelarListener = new ActionListener() { public void actionPerformed(ActionEvent e) { setEdicionFinalizada(); ventana.dispose(); } }; cancelarB.addActionListener(cancelarListener); espacio.setPreferredSize(new Dimension(80, 0)); botonera.add(cancelarB, null); botonera.add(espacio, null); botonera.add(aceptarB, null); ventana.getContentPane().setLayout(new BorderLayout()); ventana.getContentPane().add(calendario, BorderLayout.CENTER); ventana.getContentPane().add(botonera, BorderLayout.SOUTH); ventana.setSize(400, 200); ventana.setVisible(true); } }
Render: import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; public class RenderFecha extends DefaultTableCellRenderer implements TableCellRenderer { public RenderFecha() { super(); } public Component getTableCellRendererComponent(JTable tabla, Object valor, boolean isSelected, boolean hasFocus, int fila, int columna) { Color amarillo = new Color(255, 255, 185); if (valor != null) this.setText(((Fecha)valor).getFecha()); else this.setText(""); setHorizontalAlignment(CENTER); setOpaque(true); if (isSelected || hasFocus) this.setBackground(amarillo); else this.setBackground(SystemColor.control); return this; } }
Muchas gracias por adelantado. Saludos
67
« en: Martes 3 de Febrero de 2004, 08:19 »
Muchas gracias por responder.
Saludos.
68
« en: Lunes 2 de Febrero de 2004, 14:52 »
Hola de nuevo: He estado investigando un poquillo y parecía que haciendo lo siguiente iba a solucionar mi problema: tabla.setDefaultRenderer(String.class, tr);
Pero nada, aunque compila y ejecuta sin problemas, lo ignora totalmente. No lo creo, pero tal vez sea porque tengo otro render para todos los demás tipos, y ejecuto la sentencia: tabla.setDefaultRenderer(Object.class, render);
justo antes de la que he puesto para las cadenas. Alguna sugerencia?? Muchas gracias. Saludos
69
« en: Lunes 2 de Febrero de 2004, 12:49 »
Hola:
Puede decirme alguien si existe algún método para centrar el texto contenido en una JTextArea?? He estado buscando por los métodos, pero no hay nada parecido a setAlignment, setHorizontalAlignment, aunque sí que aparece la constante CENTER_ALIGNMENT, así que supongo que pueda hacerse de alguna forma.
Muchas gracias por adelantado.
Saludos
70
« en: Lunes 2 de Febrero de 2004, 11:38 »
Hola: Yo creo que es una idea excelente Saludos
71
« en: Lunes 2 de Febrero de 2004, 08:47 »
Hola:
En primer lugar muchas gracias por la ayuda.
No es que no me gusten las soluciones, pero no puedo utilizarlas tal cuál porque utilizo una clase extendida de JTable para mostrar varias tablas de la BD, y a priori no sé de qué tipo van a ser las columnas cada vez que instancie la clase. ¿Habría algún método de comprobar dinámicamente si el tipo de datos que contiene la columna es String y entonces asignarle un renderer de tipo TextRenderer?
Saludos y muchas gracias.
72
« en: Lunes 2 de Febrero de 2004, 08:37 »
Hola:
Muchas gracias por la ayuda. Tengo una preguntilla más, ¿sabes si existe alguna página en la que se cuente todo esto en profundidad? Es que en todas las que he encontrado vienen ejemplos muy básicos, y en cuanto quiero hacer algo más complicado me pierdo, porque entre hacer una subclase de JTable para controlar el aspecto de la tabla, una de DefaultTableCellRenderer para controlar el aspecto de determinadas celdas y demás, cuando quiero cambiar una cosa tengo que buscar en un mogollón de clases a ver en cuál de ellas está el método apropiado y pierdo mucho tiempo.
Muchas Gracias.
Saludos.
73
« en: Lunes 2 de Febrero de 2004, 08:25 »
Hola:
Los métodos de Jackson y de Warnier de los que hablas no son para el tratamiento de ficheros de forma estructurada?? No sé muy bien qué tienen que ver con POO, si pudieras aclarármelo... Es que ahora me pica la curiosidad. Tal vez lo que buscas es algún algoritmo similar en POO o es que se han adaptado esos métodos para objetos??
Saludos
74
« en: Lunes 26 de Enero de 2004, 09:44 »
Hola:
Si existe una longitud máxima para las palabras, sería mejor que utilizases char cadena[maximo]; en lugar de: char *cadena; en resumidas cuentas es lo mismo, pero mi experiencia me dice que de la segunda forma te trae menos problemas, así que si es posible es mejor utilizarla antes que la primera. Además así puedes pasar del malloc y del free, puesto que directamente al declararla se reserva espacio para contener cualquier palabra cuya longitud no supere la máxima.
Saludos.
75
« en: Lunes 26 de Enero de 2004, 09:33 »
Hola:
Todavía no he encontrado cómo hacerlo desde java (aunque yo también creo que puede hacerse), recurrí a crear un archivo .reg y lo ejecuté a través de la clase Runtime:
Runtime.getRuntime().exec("cmd /c regedit -s nombreFicheroReg");
No es una solución que me guste mucho, pero es que me urgía resolver este problema y no encontré ninguna otra cosa. Así que si tu avergiuas algo te agradecería mucho que me lo dijeras.
Saludos.
|
|
|