Java - bloqueado bloqueado

 
Vista:
sin imagen de perfil

bloqueado bloqueado

Publicado por Javier (4 intervenciones) el 28/10/2016 17:01:04
Hola como estan, comunidad vengo a pedirles su ayuda, resulta que hace rato estoy volteando con algo, quiero realizar una barra de menus dinamica, para ello estoy leyendo las opciones desde una carpeta con unos archivos en formato "txt" que seria los que me darian las opciones, pueden ver el gráfico de color azul, bueno, yo solo necesito que leyendo los archivos de esa carpeta me genere un vector de la forma como esta en la otra imagen.
adjunto mas imagenes para que vean como esta estructurada la carpeta. la idea en si es generar ese vector leyendo los archivos txt de las carpetas. pero no he podido me bloqueo y hasta ahi llego, les agradeceria cualquier idea o ayuda .
adjunto la carpeta


Captura
pagina01
Captura-de-pantalla-4
Captura-de-pantalla-5
Captura-de-pantalla-6
Captura-de-pantalla-7
Captura-de-pantalla-8
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

bloqueado bloqueado

Publicado por Javier (4 intervenciones) el 29/10/2016 06:05:39
Hola, si, se cual es el jtree, pero es que el vector que voy a generar ese que esta en la imagen y es el que no he podido es para descompoberlo y ya yo jugar con unas opciones internas de mi programa para volverlo menú, en si sólo necesito que leyendo los archivos de la carpeta me genere un vector así como lo dejé en la imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

bloqueado bloqueado

Publicado por LaMuerte (8 intervenciones) el 02/11/2016 02:31:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
// Objetos para las teclas de abreviación
import javax.swing.KeyStroke;
// Objetos de la interfaz
import java.awt.*;
import java.awt.event.*;
import java.lang.reflect.*;
// Objetos de lista ordenada por clave
import java.util.Hashtable;
5
// Declaración de la clase MiMenu
public class MiMenu extends JMenuBar implements ActionListener {
 private String vtOpc[][]; // Matriz de opciones
 private String MetodoAccion = ""; // Nombre del método de acciones
 private int LonOpc; // Número de filas de la matriz de opciones
 
 // Constructor de la clase MiMenu
 public MiMenu(String vtOpcPar[][], String MetAccion) {
 
 // Asignación de parámetros y variables de instancia
 vtOpc = vtOpcPar;
 MetodoAccion = MetAccion;
 LonOpc = vtOpc.length;
 
 /* Definición de la orientación y aspecto del menú. Necesaria
 para que opciones de acción directamente colocadas en la
 barra de menús restrinjan su tamaño al mínimo */
 setLayout(new FlowLayout(FlowLayout.LEFT));
 // Definición de la lista que contendrá los objetos del menú
 Hashtable Lista = new Hashtable();
 // Encontrando los tipos de objetos y llenando la lista con ellos
 JMenu tmpMenu;
 JMenuItem tmpItem;
 for (int i=0; i<LonOpc; i++) {
 if (TieneHijos(vtOpc[i][0])) {
 // Si tiene hijos, debe ser un submenú
 tmpMenu = new JMenu(vtOpc[i][0]);
// El nombre del objeto es la clave de la opción
 tmpMenu.setName(vtOpc[i][0]);
 /* El texto que se mostrará va sin el señalador del
mnemónico */
 tmpMenu.setText(QuitaCar(vtOpc[i][1], '_'));
 /* El mnemónico se asigna como el caracter despúes del
señalador */
 tmpMenu.setMnemonic(
EncuentraMnemonico(vtOpc[i][1], '_'));
 // Se agrega el objeto a la lista, ordenado por su clave
 Lista.put(vtOpc[i][0], tmpMenu);
 } else {
 // Si no, debe ser una opción de acción
 tmpItem = new JMenuItem(vtOpc[i][0]);
 // El nombre del objeto es la clave de la opción
 tmpItem.setName(vtOpc[i][0]);
 /* El texto que se mostrará va sin el señalador del
mnemónico */
 tmpItem.setText(QuitaCar(vtOpc[i][1], '_'));
/* El mnemónico se asigna como el caracter despúes del
señalador */
 char Nemonico = EncuentraMnemonico(vtOpc[i][1], '_');
 tmpItem.setMnemonic(Nemonico);
 // La tecla de aceleración es el mismo mnemónico
 tmpItem.setAccelerator(KeyStroke.getKeyStroke(
 Nemonico, ActionEvent.ALT_MASK));
 /* El comando de acción del objeto es también la clave
de la opción */
 tmpItem.setActionCommand(vtOpc[i][0]);
6
 /* Este es de acciones por lo que debe ser escuchado
por el sistema */
 tmpItem.addActionListener(this);
 // Se agrega el objeto a la lista, ordenado por su clave
 Lista.put(vtOpc[i][0], tmpItem);
 }
 }
 String IdPapa;
 // Variable temporal utilizada sólo para la comparación de clases
 JMenu tmpMenuPrb = new JMenu();
 /* Conectando los objetos de la lista de acuerdo con las
 jerarquías establecidas */
 for (int i=0; i<LonOpc; i++) {
 if (EsPrincipal(vtOpc[i][0])) {
 /* Si es una opción principal, no tiene padre y se agrega a
 la barra de menús. Dependiendo del tipo de objeto se
 recupera de la lista por su clave */
 if (Lista.get(vtOpc[i][0]).getClass() ==
 tmpMenuPrb.getClass()) {
 add((JMenu) Lista.get(vtOpc[i][0]));
 } else {
 add((JMenuItem) Lista.get(vtOpc[i][0]));
 }
 } else {
 /* Si no, tiene un padre. Dependiendo del tipo de objeto
 se recupera de la lista por su clave y se anexa al padre
 encontrado */
 IdPapa = vtOpc[i][0].substring(0,vtOpc[i][0].length()-1);
tmpMenu = (JMenu) Lista.get(IdPapa);
 if (Lista.get(vtOpc[i][0]).getClass() ==
 tmpMenuPrb.getClass()) {
 tmpMenu.add((JMenu) Lista.get(vtOpc[i][0]));
 } else {
 tmpMenu.add((JMenuItem) Lista.get(vtOpc[i][0]));
 }
 }
 }
 } // Fin del constructor MiMenu
 /* Método que determina, dada la clave de una opción,
si ésta tiene subopciones */
 private boolean TieneHijos(String Item) {
 
 /* Cuenta el número de veces que aparece la clave dada iniciando
 otras claves. Si ésta aparece más de una vez, la opción tiene
 subopciones */
 int NVeces = 0;
 int LonItem = Item.length();
 for (int i=0; i<LonOpc; i++) {
 if (vtOpc[i][0].length() >= LonItem) {
 if (vtOpc[i][0].substring(0,LonItem).equals(Item)) {
 NVeces++;
 if (NVeces > 1) {
 return true;
 }
 }
 }
7
 }
 return (NVeces > 1);
 } // Fin de TieneHijos
 /* Método que determina, dada la clave de una opción,
si ésta pertenece a la barra de menús */
 private boolean EsPrincipal(String Item) {
 
 // En la barra de menús se esperan claves de un solo dígito
 return (Item.length() == 1 );
 
 } // Fin de EsPrincipal
 /* Método de propósito general que quita un caracter específico
de una cadena */
 private String QuitaCar(String Cad, char c) {
 
 int Pos = Cad.indexOf(c);
 int Lon = Cad.length();
 if (Pos != -1) {
 // Si está el caracter
 if (Pos == 0) {
 return Cad.substring(1, Lon);
 } else {
 if (Pos == Lon-1) {
 return Cad.substring(0, Lon-1);
 } else {
 return Cad.substring(0, Pos) +
Cad.substring(Pos+1, Lon);
 }
 }
 }
 return Cad;
 
 } // Fin de QuitaCar
 
 /* Método que retorna el caracter siguiente al señalado,
entendiendo que dicho caracter es el mnemónico de una
opción de menú */
 private char EncuentraMnemonico(String Cad, char c) {
 
 int Pos = Cad.indexOf(c);
 if (Pos >= Cad.length() - 1) {
 /* El señalador de mnemónico no debe ser el último caracter
 de la cadena */
 return 0;
 }
 return Cad.charAt(Pos+1);
 
 } // Fin de EncuentraMnemonico
8
 /* Método para la resolución de las acciones en respuesta a
los eventos de MiMenu que estén siendo escuchados */
 public void actionPerformed(ActionEvent e) {
 
 try {
 /* Si el contexto en que se utiliza el objeto MiMenu es
 una ventana, dentro de la cual hay una barra de menús,
 extendiendo la barra MiMenu, el objeto que instancia
 la clase está en la tercera generación. Si este no es el
 caso, habrá que alterar la instrucción, referenciando
 el objeto padre en la generación correcta */
 Object objPapa = getParent().getParent().getParent();
 Class MiPapa =
getParent().getParent().getParent().getClass();
 /* Estableciendo que los parámetros del método de acciones
 en la clase que llama a MiMenu son de tipo String y
 pasando como argumento a dicho método la clave de la
 opción seleccionada */
 Class[] TiposParametros = new Class[] {String.class};
 Object[] argumentos = new Object[] {e.getActionCommand()};
 /* Definiendo el método de acciones de la clase que llama
 a MiMenu y sus parámetros para luego invocarlo
 ocasionando su ejecución */
 Method target = objPapa.getClass().getMethod(
MetodoAccion, TiposParametros);
 Object param[] = { e.getActionCommand() };
 target.invoke(objPapa,argumentos);
 
 } catch ( Exception exp ) {
 exp.printStackTrace();
 }
 } // Fin de actionPerformed
 
} // Fin de la clase MiMenu

Metodo main

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import javax.swing.JFrame;
import java.awt.*;
public class ParaProbarMiMenu extends JFrame {
 
 // Constructor de la clase ParaProbarMiMenu
 public ParaProbarMiMenu() {
11
 super("Probando ... ");
 Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
 setBounds(50, 50,
 screenSize.width - 100,
 screenSize.height - 100);
 /* Definición e inicialización de la matriz n x 2 contentiva
 de las opciones que se desea dar a MiMenu. Se espera que
 esta matriz contenga sólo tipos String, y que cada elemento,
 en sentido vertical, esté compuesto por el par Clave, Opción,
 donde Clave es un número que mantiene la jerarquía del
 árbol de opciones, por ejemplo, 112 es subopción de 11, la
 cual es subopción de 1, y así en todos los demás casos. */
 String vtOpciones[][] = {
 {"1", "Opción _1"},
 {"11", "Opción 1_1"},
 {"12", "Opción 1_2"},
 {"121", "Opción 12_1"},
 {"122", "Opción 12_2"},
 {"13", "Opción 1_3"},
 {"2", "Opción _2"},
 {"21", "Opción 2_1"},
 {"22", "Opción 2_2"},
 {"221", "Opción 22_1"},
 {"3", "Opción _3"}
 };
 
 /* Llamada de MiMenu que envía la matriz de opciones y el
 Método de la clase que lo invoca que resuelve las acciones
 del menú dado */
 MiMenu mnPrin = new MiMenu(vtOpciones, "AccionesMenu");
 // Establecimiento de MiMenu como el menú de la aplicación
 setJMenuBar(mnPrin);
 
 } // Fin del constructor de ParaProbarMiMenu
 
 /* Método que resuelve las acciones a tomar cuando se ha seleccionado
una opción de MiMenu, la cual pasa como parámetro String en Opc y
representa una clave de la matriz de opciones definida. */
 public void AccionesMenu(String Opc) {
 
 /* En este ejemplo, estas son las claves de opciones terminales
 (esto es, aquellas que provocan acciones) definidas. Por
 supuesto si cambia el menú de opciones, será necesario
 alterar el contenido de este método, en consecuencia. */
 if (Opc.equals("11")) {
 System.out.print("11");
 } else if (Opc.equals("121")) {
 System.out.print("121");
 } else if (Opc.equals("122")) {
 System.out.print("122");
 } else if (Opc.equals("13")) {
 System.out.print("13");
 } else if (Opc.equals("21")) {
 System.out.print("21");
 } else if (Opc.equals("221")) {
12
 System.out.print("221");
 } else if (Opc.equals("3")) {
 System.out.print("3");
 }
 } // Fin de AccionesMenu
 
 // Principal de ParaProbarMiMenu
 public static void main(String[] args) {
 JFrame.setDefaultLookAndFeelDecorated(true);
 ParaProbarMiMenu frame = new ParaProbarMiMenu();
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 frame.setVisible(true);
 } // Fin de main
} // Fin de la clase ParaProbarMiMenu
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

bloqueado bloqueado

Publicado por Javier (4 intervenciones) el 02/11/2016 12:57:04
Hola, si ésos son los métodos que voy a utilizar pero no es la solución al problemita que tengo. Necesito generar un vector con esa característica como el de la opciones, pero leyendo unos archivos de mi carpeta como esta en la imagen y la carpeta está en los archivos adjuntos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar