Misshaell
Usuario (Argentina)

¡Lo principal que nos enseña la evolución sobre la raza es que no hay distintas razas biológicas de seres humanos! Lo que llamamos "razas" humanas son categorías definidas por razones históricas, sociales y culturales; pero esas categorías no corresponden a divisiones "naturales" de la especie humana. Aclaremos una cosa: el concepto social de "raza" todavía tiene importancia social en la vida humana; por ejemplo, puede ser una importante forma de identificación cultural de grupos sociales oprimidos y opresores (en un sentido social positivo, como el movimiento de orgullo negro, o en una dirección social negativa, como el KKK y otros supremacistas blancos). Además, todavía se usa para oprimir y discriminar económica, social y culturalmente a grandes grupos. Por eso la lucha contra el racismo y la opresión nacional sigue, y hay que seguir luchando concretamente por la implementación de "igualdad racial" y por la emancipación de los pueblos oprimidos. Es incorrecto decir que la "raza ya no importa". Pero esto se debe a la realidad social de la raza. Desde un punto de vista biológico, el concepto de distintas razas de seres humanos carece de sentido. Puede que esto sorprenda a algunos lectores porque nos han condicionado socialmente a pensar que cada persona pertenece a una "raza" por diferencias superficiales como el color de la piel y la textura o el tipo del cabello. Mucha gente sabe que no hay una "raza" superior o inferior; mucha gente también sabe que todos los seres humanos pertenecemos a una sola especie (todas las poblaciones humanas de todo el globo se pueden cruzar y reproducir). Pero a pesar de eso, muchos creen que las "razas" son categorías biológicas naturales, ¡o que son como las razas de perros! Eso es completamente incorrecto. No importa cómo se definan las categorías (ni si son 5 ó 500), cuando se comparan poblaciones humanas al nivel molecular y genético, ¡todas esas categorías "raciales" se van a pique! Eso se debe a que los tipos y la cantidad de variación genética que existen dentro de poblaciones humanas y entre ellas... ¡no corresponden a ninguna de las categorías sociales que definimos como las grandes "razas" humanas! Bueno, sí hay algunos patrones de variación genética entre poblaciones regionales de seres humanos, pero esos patrones no respetan las categorías "raciales". Por ejemplo, la variación genética que se encuentra en una población de un continente puede parecerse más a la de una población que está al otro lado del mundo que a la de una población vecina. ¡Además, no hay un solo gen (ni un solo alelo, que es una forma alternativa de un gen) que sirva para distinguir claramente una "raza" de otra! Hay ciertas diferencias bien conocidas en poblaciones de distintas regiones geográficas del mundo en la frecuencia de distribución de ciertos alelos genéticos, por ejemplo, los que dan resistencia a ciertas enfermedades. (Se sabe que los alelos de hemoglobina que causan anemia falciforme pero protegen de malaria son más comunes en grupos cuyos antepasados recientes son de las partes de África y Asia donde es común la malaria; pero esto no siempre se correlaciona claramente con lo que llamamos "raza". La mayoría de las diferencias reconocibles entre amplios grupos humanos tienen que ver con características muy superficiales, como color de piel o tipo de cabello: nadie negará que en promedio es fácil distinguir entre personas de familia bantú, japonesa y sueca. Pero eso es "en promedio" y no hay un miembro "típico" de ninguna de las grandes "razas" humanas en ninguna parte del mundo, ni siquiera con respecto a rasgos superficiales como color de piel o tipo de cabello o de cuerpo. Por ejemplo, los "africanos" abarcan todos los colores imaginables de piel: todo tono imaginable de piel oscura, piel clara (norafricanos y egipcios de apariencia caucásica) y piel amarilla (los KoiSan del sur); igualmente tienen todos los tipos de cuerpo; en África viven los pigmeos, que son los seres humanos más bajos (en promedio) y los masai, que son los más altos (en promedio). De modo similar, los "europeos" abarcan gente de piel clara y cabello rubio (el escandinavo promedio), pero también gente de piel oscura y cabello oscuro (del sur y el este) que se parece más a las poblaciones del norte de África y del Medio Oriente que al sueco promedio. Los "asiáticos" tampoco encajan en un solo estereotipo: hay una amplia variedad de gente, como turcos, indios y japoneses, y abarcan todo color imaginable de piel y todo tipo de cuerpo. Los "hispanos" o "latinoamericanos" abarcan chilenos que parecen canadienses de piel clara, amerindios de piel oscura de las zonas tropicales y negros de la costa de Brasil o de Centroamérica. O sea que donde quiera que miremos encontramos una extensa variedad de colores de piel y de tipo de cuerpo. (Unos se deben a la "mezcla" de migraciones e invasiones recientes; otros son más antiguos, como la mayor frecuencia de piel oscura en las zonas tropicales y la mayor frecuencia de piel clara en las zonas templadas y árticas, que posiblemente surgieron como adaptaciones locales a ciertas condiciones ambientales en los primeros tiempos de la expansión humana por el planeta. Esto se explora más adelante en este recuadro). Pero en la actualidad la variedad es tan grande que no tiene sentido hablar de un "africano" típico, un "europeo" típico, un "asiático" típico o un "hispano" típico, ni siquiera con respecto a las características más superficiales como el color de piel. Algo más importante es que si vamos más a fondo, si examinamos la variación molecular y genética presente en el ADN de todas y cada una de las poblaciones humanas, encontraremos que siempre hay más variación genética general entre los individuos de una población que entre dos poblaciones geográficas, o entre dos grupos "raciales", en cualquier parte del planeta.De hecho, el consenso de los antropólogos, los biólogos moleculares y los genetistas de población es que el concepto de "razas" biológicas en los seres humanos por regla general no tiene sentido porque prácticamente toda la cantidad de variación genética presente en la especie humana entera se encuentra en cualquier población humana en cualquier parte del mundo. Por ejemplo, como señala el genetista de población Richard Lewontin, si todos los seres humanos del mundo se extinguieran menos los de la tribu kikuyu de África oriental, esa tribu preservaría por lo menos el 85% de toda la variabilidad genética de la especie humana en su totalidad. La definición de raza biológica (también llamada raza geográfica o subespecie) es una población de individuos variables genéticamente que se cruzan entre sí pero que mantienen constantemente una proporción relativa (o "frecuencia relativa" de ciertas formas específicas de genes (alelos) que es diferente a la de poblaciones de la misma especie que viven en una zona geográfica diferente. Desde un punto de visto biológico, repito, no hay un africano "típico", un "negro africano" típico, un "afroamericano" típico o un "negro" típico, igual que no hay "blancos" típicos, "asiáticos" típicos ni "hispanos" típicos. Lo mismo se aplica a cualquier otra categoría racial que se quiera definir. No hay razas biológicas humanas por una sencilla razón. La única especie humana que existe en la actualidad, Homo sapiens, seguramente empezó (como todas las especies) como una pequeña población que evolucionó de una especie anterior (probablemente Homo ergaster,la versión africana de Homo erectus, o una especie homínida muy similar); pero también sabemos por el registro fósil que Homo sapiens, tras evolucionar hace unos 200,000 años, se extendió a una gran variedad de hábitats desde hace unos 50,000 años. O sea que en un tiempo relativamente corto se extendió de África a todos los hábitats y zonas climáticas: el Medio Oriente, Europa, Asia, Australia y cruzó del norte de Asia a las Américas hace por lo menos 12,000 años. La evidencia científica indica que nuestra especie no ha tenido modificaciones biológicas significativas en los últimos 100,000 años. Lo que sí ha cambiado mucho es la cultura humana, nuestra capacidad de desarrollar, transmitir y ampliar el caudal de conocimientos y experiencias transmitidos de generación en generación por medios culturales no genéticos; esto hizo que fuéramos la primera especie del planeta capaz de cambiarse y de cambiar el mundo que la rodea (rápida y dramáticamente) por medios culturales, pasando por encima y superando el mecanismo mucho más lento y limitado de la evolución biológica. El hecho de que los rasgos biológicos que nos hicieron diferentes --la combinación de locomoción bípeda (que nos dejó las manos libres) y el período de desarrollo posnatal del cerebro (que permitió una mayor cantidad de aprendizaje social con una concomitante mayor coordinación y comunicación social)-- nos dio una capacidad sin precedentes de adaptarnos a cualquier entorno imaginable por medio de adaptaciones y modificaciones culturales, en vez del medio más lento y limitado de la evolución biológica; este hecho, repito, es mucho más importante que la variación genética de los individuos. Además, solo en los primeros momentos de la historia de nuestra especie (y solo temporalmente) las poblaciones locales permanecieron aisladas unas de otras por mucho tiempo. Algunas de las pequeñas diferencias del color de piel promedio de poblaciones de distintas regiones pueden deberse a cierto grado de adaptación biológica a las condiciones locales en las primeras épocas de la historia humana. Por ejemplo, en todo el globo las poblaciones modernas cuyos antepasados vivían en zonas tropicales (donde se recibe más radiación ultravioleta de la luz solar) tienden a tener la piel más oscura (más pigmento de melanina) que las poblaciones cuyos antepasados vivían en las zonas templadas más cerca de los polos (que reciben menos luz solar y menos radiación ultravioleta). Se ha sugerido que eso fue una adaptación de las poblaciones locales a las condiciones locales porque la piel oscura protege de la destrucción del ácido fólico por la radiación ultravioleta (y el ácido fólico es un nutriente importante en los años reproductivos y previene defectos genéticos como la espina bífida), mientras que la piel clara hace más fácil producir vitamina D (importante para el metabolismo del calcio y la formación de un esqueleto fuerte en zonas de insuficiente luz solar). Por lo tanto es posible (aunque no es absolutamente cierto) que las diferencias promedio de color de piel en poblaciones geográficas surgieron en los comienzos de nuestra historia debido a las ventajas reproductoras de cada color de piel en cada región según la cantidad de luz solar. (Esta propuesta se explica en detalle en un artículo de Jablonski y Chapman en la revista Scientific American, octubre de 2002). Pero así y todo, la mayor cantidad de variación genética presente en la especie humana es la variación que existe entre los individuos de cualquier población humana. En el tiempo relativamente corto desde que apareció el Homo sapiens moderno (hace unos 200,000 años), ninguna población humana ha vivido en completo aislamiento reproductor el tiempo necesario (la gran cantidad de generaciones) para que se acumulen suficientes diferencias genéticas y se formen distintas razas geográficas. Unas poblaciones tienen una distinta frecuencia relativa de genes que vienen en distintas formas (por ejemplo los genes que codifican el tipo sanguíneo), pero no es posible predecir la "raza" a partir de esas diferencias. Como señala Richard Lewontin: "Los kikuyu de África oriental difieren de los japoneses en frecuencia génica, pero también difieren de sus vecinos los masai... las definiciones sociales e históricas que colocan a las dos tribus de África oriental en la misma 'raza' y ponen a los japoneses en otra 'raza' son arbitrarias en el sentido biológico". Es importante recordar que a lo largo de la historia de nuestra especie los grupos humanos han inmigrado y emigrado continuamente de distintas zonas, se han reproducido entre sí continuamente, y ha habido una corriente ininterrumpida de genes entre distintas poblaciones que con el tiempo ha cubierto todo el globo. Las migraciones, en gran escala y en pequeña escala, han caracterizado la historia de nuestra especie, y continúan, lo que garantiza nuestra unidad biológica y un constante intercambio y enriquecimiento entre culturas. Los vergonzosos e ignorantes conatos de preservar la presunta "pureza racial" de una "raza" (que fomentan los nazis, la Nación Aria, el KKK y demás supremacistas raciales) son, además, absurdos y ¡sin la menor base científica! Aparte de que la biología comprueba claramente que no hay grupos humanos o "razas" innatamente "superiores" o "inferiores", muchos reconocemos, y celebramos, el hecho de que la pesadilla de los supremacistas (la "mezcla de razas" ¡esencialmente ya ha sucedido! Somos y siempre hemos sido una sola especie mundial, variada pero biológicamente indivisible. [El libro reciente The Emperor's New Clothes: Biological Theories of Race at the Millennium, de Joseph L. Graves, y partes de La falsa medida del hombre, de Stephen Jay Gould, y de No en nuestros genes, de Lewontin, Rose y Kamin, explican más a fondo por qué el concepto de raza biológica no se aplica a los seres humanos].

Varios AWT y clases Swing proporcionan diferentes Layout: BorderLayout BoxLayout CardLayout FlowLayout GridBagLayout GridLayout GroupLayout SpringLayout En esta sección se muestra un ejemplo de interfaces gráficas de usuario que utilizan estos layout managers. Podes encontrar enlaces de ejemplos. http://docs.oracle.com/javase/tutorial/uiswing/examples/layout/index.html Qué es un Layout En java, cuando hacemos ventanas, la clase que decide cómo se reparten los botones (Y demás controles) dentro de la ventana se llama Layout. Esta clase es la que decide en qué posición van los botones y demás componentes, si van alineados, en forma de matriz, cuáles se hacen grandes al agrandar la ventana, etc. Otra cosa importante que decide el Layout es qué tamaño es el ideal para la ventana en función de los componentes que lleva dentro. Con un layout adecuado, el método pack() de la ventana hará que coja el tamaño necesario para que se vea todo lo que tiene dentro. ventana.pack(); Las ventanas vienen con un Layout por defecto. En java hay varios layouts disponbiles y podemos cambiar el de defecto por el que queramos. El Layout null Uno de los Layouts más utilizados por la gente que empieza, por ser el más sencillo, es NO usar layout. Somos nosotros desde código los que decimos cada botón en qué posición va y qué tamaño ocupa contenedor.setLayout(null); // Eliminamos el layout contenedor.add (boton); // Añadimos el botón boton.setBounds (10,10,40,20); // Botón en posicion 10,10 con ancho 40 pixels y alto 20 Esto, aunque sencillo, no es recomendable. Si estiramos la ventana los componentes seguirán en su sitio, no se estirarán con la ventana. Si cambiamos de sistema operativo, resolución de pantalla o fuente de letra, tenemos casi asegurado que no se vean bien las cosas: etiquetas cortadas, letras que no caben, etc. Además, al no haber layout, la ventana no tiene tamaño adecuado. Deberemos dárselo nosotros con un ventana.setSize(...). El tiempo que ahorramos no aprendiendo cómo funcionan los Layouts, lo perderemos echando cuentas con los pixels, para conseguir las cosas donde queremos, sólo para un tipo de letra y un tamaño fijo. FlowLayout El FlowLayout es bastante sencillo de usar. Nos coloca los componente en fila. Hace que todos quepan (si el tamaño de la ventana lo permite). Es adecuado para barras de herramientas, filas de botones, etc. contenedor.setLayout(new FlowLayout()); contenedor.add(boton); contenedor.add(textField); contenedor.add(checkBox); Puedes ver un ejemplo más completo de FlowLayout BoxLayout Es como un FlowLayout, pero mucho más completo. Permite colocar los elementos en horizontal o vertical. // Para poner en vertical contenedor.setLayout(new BoxLayout(contenedor,BoxLayout.Y_AXIS)); contenedor.add(unBoton); contenedor.add(unaEtiqueta); Un ejemplo sencillo de BoxLayout Un tutorial completo en http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html GridLayout Este pone los componentes en forma de matriz (cuadrícula), estirándolos para que tengan todos el mismo tamaño. El GridLayout es adecuado para hacer tableros, calculadoras en que todos los botones son iguales, etc. // Creación de los botones JButton boton[] = new JButton[9]; for (int i=0;i<9;i++) boton = new JButton(Integer.toString(i)); // Colocación en el contenedor contenedor.setLayout (new GridLayout (3,3)); // 3 filas y 3 columnas for (int i=0;i<9;i++) contenedor.add (boton); // Añade los botones de 1 en 1. Aquí puedes ver un ejemplo completo de GridLayout BorderLayout El BorderLayout divide la ventana en 5 partes: centro, arriba, abajo, derecha e izquierda. Hará que los componentes que pongamos arriba y abajo ocupen el alto que necesiten, pero los estirará horizontalmente hasta ocupar toda la ventana. Los componentes de derecha e izquierda ocuparán el ancho que necesiten, pero se les estirará en vertical hasta ocupar toda la ventana. El componente central se estirará en ambos sentidos hasta ocupar toda la ventana. El BorderLayout es adecuado para ventanas en las que hay un componente central importante (una tabla, una lista, etc) y tiene menús o barras de herramientas situados arriba, abajo, a la derecha o a la izquierda. Este es el layout por defecto para los JFrame y JDialog. contenedor.setLayout (new BorderLayout()); contenedor.add (componenteCentralImportante, BorderLayout.CENTER); contenedor.add (barraHerramientasSuperior, BordeLayout.NORTH); contenedor.add (botonesDeAbajo, BorderLayout.SOUTH); contenedor.add (IndiceIzquierdo, BorderLayout.WEST); contenedor.add (MenuDerecha, BorderLayout.EAST); Por ejemplo, es bastante habitual usar un contenedor (JPanel por ejemplo) con un FlowLayout para hacer una fila de botones y luego colocar este JPanel en el NORTH de un BorderLayout de una ventana. De esta forma, tendremos en la parte de arriba de la ventana una fila de botones, como una barra de herramientas. JPanel barraHerramientas = new JPanel(); barraHerrameientas.setLayout(new FlowLayout()); barraHerramientas.add(new JButton("boton 1"); ... barraHerramientas.add(new JButton("boton n"); JFrame ventana = new JFrame(); ventana.getContentPane().setLayout(new BorderLayout()); // No hace falta, por defecto ya es BorderLayout ventana.getContentPane().add(barraHerramientas, BorderLayout.NORTH); ventana.getContentPane().add(componentePrincipalDeVentana, BorderLayout.CENTER); ventana.pack(); ventana.setVisible(true); Aquí tienes un ejemplo más detallado de BorderLayout. GridBagLayout El GridBagLayout es de los layouts más versátiles y complejos de usar. Es como el GridLayout, pone los componentes en forma de matriz (cuadrícula), pero permite que las celdas y los componentes en ellas tengan tamaños variados. Es posible hacer que un componente ocupe varias celdas Un componente puede estirarse o no con su celda Si no se estira, puede quedar en el centro de la celda o pegarse a sus bordes o esquinas. Las columnas pueden ensancharse o no al estirar la ventana y la proporición podemos decidirla Lo mismo con la filas. Explicar todo esto aquí es algo largo. En http://www.chuidiang.com/java/layout/GridBagLayout/GridBagLayout.php tienes un tutorial más completo de cómo usar este layout. CardLayout El CardLayout hace que los componente recibidos ocupen el máximo espacio posible, superponiendo unos a otros. Sólo es visible uno de los componentes, los otros quedan detrás. Tiene métodos para indicar cual de los componentes es el que debe quedar encima y verse. El CardLayout es el que utiliza el JTabbedPane (el de las pestañas) de forma que en función de la pestaña que pinchemos, se ve uno u otro. SpringLayout Para los nostálgicos que usaban motif, este layout es muy similar a los attachment de motif. Se añaden los componentes y para cada uno de ellos tenemos que decir qué distancia en pixel queremos que tenga cada uno de sus bordes respecto al borde de otro componente. Por ejemplo, para decir que el borde izquierdo de una etiqueta está a 5 pixels del panel que la contiene ponemos layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.WEST, contentPane); Para decir que el borde derecho de la etiqueta debe estar a 5 pixels del borde izquierdo de un JTextField, ponemos esto layout.putConstraint(SpringLayout.WEST, textField, 5, SpringLayout.EAST, label); Con este layout, cuando estiramos el panel, siempre ceden aquellos componentes más "flexibles". Entre una etiqueta y una caja de texto, la caja de texto es la que cambia su tamaño. Un tutorial completo con ejemplos en http://java.sun.com/docs/books/tutorial/uiswing/layout/spring.html GroupLayout El GroupLayout destaca entre los demás administradores de despliegue porque nos permite establecer de manera precisa la posición y el tamaño de cada componente dentro del contenedor. La clase GroupLayout requiere de los métodos setHorizontalGroup y setVerticalGroup para definir la ubicación y las dimensiones de los componentes. Para utilizar estos métodos es importante que sepan la función de los objetos de tipo SequentialGroup y los objetos de tipo ParallelGroup. Un objeto de tipo SequentialGroup representa un grupo cuyo contenido está acomodado en secuencia. Mientras que un objeto de tipo ParallelGroup representa un grupo cuyo contenido está acomodado en paralelo. El método setHorizontalGroup recibe por parámetros un objeto de tipo ParallelGroup. Los componentes y grupos ordenados paralelamente tienen la misma posición en el eje X. Mientras que en una secuencia, la posición más a la derecha le corresponde al último componente o grupo en ser agregado. El método setVerticalGroup recibe por parámetros un objeto de tipo ParallelGroup. Los componentes y grupos ordenados paralelamente tienen la misma posición en el eje Y. Mientras que en una secuencia, la posición más abajo le corresponde al último componente o grupo en ser agregado. Los objetos SequentialGroup y objetos ParallelGroup permiten determinar un rango de amplitud para cada componente. Además, permiten dejar espacios desocupados cuyo rango de amplitud también podemos definir. CardLayout CardLayout, es un manejador de disenio que nos permite, ubicar componentes swing dentro de un mismo contenedor, y poder visualizarlos solamente uno a la vez. Este layout es usado por los JTabbedPane, con la diferencia de la separacion de los bordes de cada panel. Es decir, podemos tener un contenedor pricipal, y dentro de el, varios paneles, y atravez de una seleccion, elegir cual de estos paneles queremos q se visualize. Primero tenemos que crear el contenedor(JFrame, JPanel, etc), y luego atravez del metodo “setLayout()” asignarle el layout correspondiente. JFrame frame = new JFrame(); frame.setLayout(new CardLayout()); Una vez, asiganado el layout al contenedor, tendremos q agregar los componentes, plenamente ya declarados y creados. Para agregar necesitamos 2 argumentos, el objeto a agregar, y un nombre referencial al elemento agregado JPanel panel = new JPanel(); JPanel pane2 = new JPanel(); frame.add(panel, referenciaPanel1); frame.add(pane2, referenciaPanel2); Sencilo no?, espera, hay unos metodos basicos e importantes, al momento de manejar los eventos, como son. first (nombreContenedor) -> metodo q permite visualizar el primer objeto agregado next (nombreContenedor) -> metodo q permite visuliza el objeto siguiente. previous (nombreContenedor) -> permite visualizar el objeto anterior show (nombreContenedor, referenciaPanel) -> permite visualizar un obejto especificado, aqui necesitamos el nombre del contenedor y el nombre referencial asignado al momento de agregarlo. Para esta entrada he preparado un ejemplo clasico, para situaciones clasicas…jejee La aplicacion, contiene, 1 JFrame principal, 1 PanelSuperior incluido en el JFrame,1 JComboBox incluido en el PanelSuperior, 1 PanelInferior incluido en el JFrame, y 3 paneles incluidos en el PanelInferior. El ejemplo consciste en que atravez de un JComboBox, seleccionaremos un elemento de la lista, y segun el elemento seleccionado, cambiara el panel inferior mostrando uno de los paneles incluidos en el., es decir, el panel ira cambiando segun la seleecion del elemento de la lista del JComboBox. YA q en este ejericcio he utilizado manejo de eventos, he trabajado con 2 clases, la primera (WindowCardLayout) es la interfaz de usuario y la segunda (ControlCardLayout) la q maneja los eventos de la primera.