亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java7.htm

?? E-books about Java Programing in Spanish
?? HTM
字號:
<HTML>
<HEAD>
<TITLE>Java desde Cero</TITLE>
</HEAD>
<BODY background=/iconos/1.gif  TEXT=000000 LINK=FF0000 VLINK=A62A2A>
<H1>Java a trav&eacute;s de la ventana<BR>
</H1>
<P>
Para hacer algo un poco m&aacute;s divertido, vamos a empezar
a trabajar con la biblioteca java.awt, que es la que contiene
todo un grupo de objetos para trabajar con ventanas y sus contenidos:
botones, listas, etc.<BR>
<H2>Nuestra primera ventana</H2>
<P>
En Java, la clase <B>Window</B> (descendiente de <B>Container</B>),
en la biblioteca <I>java.awt</I>, permite implementar ventanas
&quot;peladas&quot;, es decir, sin bordes ni men&uacute;s. Son
la base para cualquier tipo de ventanas (normales, pop-up, di&aacute;logos,
etc.). El otro descendiente de <B>Container</B>, <B>Panel</B>,
es m&aacute;s sencillo a&uacute;n y sirve como espacio para que
una aplicaci&oacute;n incorpore dentro suyo otros elementos (incluyendo
otros paneles).
<P>
La interface Java dirige tanto a uno como a otro todos los eventos
de teclado, mouse y foco que los afecten (en seguida veremos c&oacute;mo
usar estos eventos).
<P>
De la clase <B>Window</B> descienden <B>Dialog</B> (para implementar
di&aacute;logos) y <B>Frame</B>, que es una ventana algo m&aacute;s
completa: ya tiene borde y men&uacute;, as&iacute; como los botones
de cerrar, maximizar, etc.
<P>
El siguiente ejemplo crea una ventana que no hace nada pero contiene
varios elementos; se puede usar directamente (desde la ventana
DOS o Unix con <I>java Ejemplo7</I>) o como applet dentro de una
p&aacute;gina HTML.
<P>
Si bien los elementos no disparan ninguna acci&oacute;n, se pueden
utilizar con toda su funcionalidad (por ejemplo, editar el texto
dentro de los cuadros de texto o presionar el bot&oacute;n).<BR>
<PRE>
<FONT SIZE=2>// grabar como &quot;Ejemplo7.java&quot;
// compilar con &quot;javac Ejemplo7.java&quot;
import java.awt.*;

public class Ejemplo7 extends Frame {
    boolean inAnApplet = true;

    public static void main(String args[]) {
        Ejemplo7 window = new Ejemplo7();
        window.inAnApplet = false;
        window.setTitle(&quot;Ejemplo&quot;);
        window.pack();
        window.show();
    }

    public Ejemplo7() {
	Panel panelAlto = new Panel();
	panelAlto.add(&quot;West&quot;, new Label(&quot;Cartel&quot;, Label.CENTER));
	panelAlto.add(&quot;East&quot;, new TextArea(&quot;Area de texto&quot;, 5, 20));
	add(&quot;North&quot;, panelAlto);

	Panel panelBajo = new Panel();
	panelBajo.add(new TextField(&quot;Campo de Texto&quot;));
	panelBajo.add(new Button(&quot;Bot&oacute;n&quot;));
	add(&quot;South&quot;,panelBajo);
    }

    public boolean handleEvent(Event ev) {
        if (ev.id == Event.WINDOW_DESTROY) {
            if (inAnApplet) {
                dispose();
            } else {
                System.exit(0);
            }
        }
        return super.handleEvent(ev);
    }
}<BR>
</FONT>
</PRE>
<H3>Un poco de detalle</H3>
<P>
La clase desciende de <B>Frame</B> (o sea que ser&aacute; una
ventana con borde, aunque no le vamos a poner men&uacute;).
<P>
Vamos a usar el flag <B>inAnApplet</B> para saber si se arranc&oacute;
como applet o como aplicaci&oacute;n standalone (hay que cerrarla
en manera diferente en cada caso)
<PRE>
<FONT SIZE=2>public class Ejemplo7 extends Frame {
    boolean inAnApplet = true;</FONT>
</PRE>
<P>
Si se llama como aplicaci&oacute;n standalone, lo primero que
se ejecuta es <FONT FACE="Arial">main(...)</FONT>; en este caso
la aplicaci&oacute;n crea una instancia de <FONT FACE="Arial">Ejemplo7</FONT>
(ejecutando el constructor <FONT FACE="Arial">Ejemplo7()</FONT>
a trav&eacute;s de <I>new</I>), define que <B>no</B> es un applet,
y llama a tres m&eacute;todos de la &quot;abuela&quot; window:
<UL>
<LI><FONT FACE="Arial">setTitle</FONT> que define cu&aacute;l
va a ser el t&iacute;tulo que aparece en la ventana
<LI><FONT FACE="Arial">pack</FONT>  que dimensiona los elementos
que componen la ventana a su tama&ntilde;o preferido
<LI><FONT FACE="Arial">show</FONT> que muestra la ventana
</UL>
<P>
<PRE>
<FONT SIZE=2>public static void main(String args[]) {
        Ejemplo7 window = new Ejemplo7();
        window.inAnApplet = false;
        window.setTitle(&quot;Ejemplo&quot;);
        window.pack();
        window.show();
    }<BR>
</FONT>
</PRE>
<P>
Ojo! No confundir el objeto (instancia) <FONT FACE="Arial">window</FONT>
con la clase <B>Window</B>!
<P>
Si se carga como applet, entonces se ejecuta el constructor <FONT FACE="Arial">Ejemplo7()</FONT>
como en el caso anterior:<BR>
<PRE>
<FONT SIZE=2>public Ejemplo7() {
	Panel panelAlto = new Panel();
	panelAlto.add(&quot;West&quot;, new Label(&quot;Cartel&quot;, Label.CENTER));
	panelAlto.add(&quot;East&quot;, new TextArea(&quot;Area de texto&quot;, 5, 20));
	add(&quot;North&quot;, panelAlto);

	Panel panelBajo = new Panel();
	panelBajo.add(new TextField(&quot;Campo de Texto&quot;));
	panelBajo.add(new Button(&quot;Bot&oacute;n&quot;));
	add(&quot;South&quot;,panelBajo);
    }<BR>
</FONT>
</PRE>
<P>
Este constructor define dos paneles que forman el contenido de
la ventana (panelAlto y panelBajo), los llena con un par de componentes
y los pone dentro de la ventana (recordar que <FONT FACE="Arial">Ejemplo7</FONT>
es una ventana!).
<P>
Para verlo m&aacute;s claro, se crea el panel (o espacio para
contener objetos) con:
<PRE>
<FONT SIZE=2>	Panel panelAlto = new Panel();<BR>
</FONT>
</PRE>
<P>
Se agregan componentes al panel con el m&eacute;todo <FONT FACE="Arial">add</FONT>:
<PRE>
<FONT SIZE=2>	panelAlto.add(&quot;West&quot;, new Label(&quot;Cartel&quot;, Label.CENTER));
	panelAlto.add(&quot;East&quot;, new TextArea(&quot;Area de texto&quot;, 5, 20));
<BR>
</FONT>
</PRE>
<P>
Se agregan el panel dentro de nuestro objeto con:
<PRE>
<FONT SIZE=2>	add(&quot;North&quot;, panelAlto);</FONT>
</PRE>
<P>
que equivale a:
<PRE>
<FONT SIZE=2>	this.add(&quot;North&quot;, panelAlto);</FONT>
</PRE>
<P>
lo que se puede ver (aunque es inv&aacute;lido porque la clase
no es static) como:
<PRE>
<FONT SIZE=2>	Ejemplo7.add(&quot;North&quot;, panelAlto);</FONT>
</PRE>
<P>
Como nuestra clase <FONT FACE="Arial">Ejemplo7</FONT> desciende
de <FONT FACE="Arial">Frame</FONT>, &eacute;sta de <FONT FACE="Arial">Window</FONT>,
y &eacute;sta de <FONT FACE="Arial">Container</FONT>, el m&eacute;todo
<I>add</I> lo est&aacute; heredando de... su bisabuela! Por otra
parte, <FONT FACE="Arial">Panel</FONT> es hija de <FONT FACE="Arial">Container</FONT>,
y usa el mismo m&eacute;todo para agregar sus componentes. Interesante,
no? Veamos la estructura:<BR>
<PRE>
<FONT SIZE=2>Object --- Component --- Container --+-- Panel
                                     |
                                     +-- Window --- Frame --- Ejemplo7
</FONT>
</PRE>
<P>
Noten que hemos usado dos m&eacute;todos <FONT FACE="Arial">add</FONT>
con diferente <I>signature</I>:
<PRE>
<FONT SIZE=2>	panelAlto.add(&quot;West&quot;, new Label(&quot;Cartel&quot;, Label.CENTER));
	..........
	panelBajo.add(new Button(&quot;Bot&oacute;n&quot;));<BR>
</FONT>
</PRE>
<P>
El m&eacute;todo <FONT FACE="Arial">add(Component)</FONT> agrega
un componente al final; el m&eacute;todo <FONT FACE="Arial">add(String,Component)</FONT>
lo agrega en un lugar especificado por una palabra que depende
del <I>LayoutManager</I>, el objeto que se encarga de ordenar
los componentes dentro del contenedor.
<P>
<I>LayoutManager</I> es una <I>interface</I>, y como tal debe
implementarse a trav&eacute;s de objetos no abstractos de los
que hay varios predefinidos en la librer&iacute;a java.awt: <FONT FACE="Arial">BorderLayout,
CardLayout, FlowLayout, GridBagLayout</FONT> y <FONT FACE="Arial">GridLayout</FONT>.
<P>
El Layout por defecto es BorderLayout, que define en el contenedor
las &aacute;reas &quot;<FONT FACE="Arial">North</FONT>&quot;,
 &quot;<FONT FACE="Arial">South</FONT>&quot;, &quot;<FONT FACE="Arial">West</FONT>&quot;,
&quot;<FONT FACE="Arial">East</FONT>&quot; y &quot;<FONT FACE="Arial">Center</FONT>&quot;
y es que usamos aqu&iacute;. <FONT FACE="Arial">CardLayout</FONT>
permite &quot;apilar&quot; los componentes como cartas y ver uno
por vez, <FONT FACE="Arial">FlowLayout</FONT> los ordena de izquierda
a derecha como un texto, <FONT FACE="Arial">GridLayout</FONT>
los ordena en una cuadr&iacute;cula donde cada componente tiene
un tama&ntilde;o fijo y <FONT FACE="Arial">GridBagLayout</FONT>
los pone en una cuadr&iacute;cula pero cada uno puede tener el
tama&ntilde;o deseado.
<P>
Noten que no hace falta llamar, en el caso del applet, a <FONT FACE="Arial">Pack()</FONT>
y <FONT FACE="Arial">Show()</FONT>.
<H3>Y los eventos...</H3>
<P>
Ahora vamos a ver un m&eacute;todo que viene de la clase tatarabuela!
Hace falta decir que me gusta esto de los objetos? 
<P>
Vamos a redefinir <FONT FACE="Arial">handleEvent(Event)</FONT>,
que es el m&eacute;todo que analiza los eventos dirigidos al componente
y toma las acciones adecuadas.
<P>
La clase <FONT FACE="Arial">Event</FONT> define b&aacute;sicamente
una serie de m&eacute;todos que permiten saber si hay alguna tecla
de control presionada y muchas constantes que indican si se presion&oacute;
o movi&oacute; el mouse, si se presion&oacute; alguna tecla en
particular, si se cambi&oacute; el tama&ntilde;o de la ventana,
etc. En particular hay algunos atributos interesantes:
<UL>
<LI>id que indica el tipo de evento
<LI>target que indica sobre qu&eacute; componente se produjo el
evento
<LI>key qu&eacute; tecla se presion&oacute; si fue un evento de
teclado
</UL>
<P>
etc.
<P>
En los descendientes de <FONT FACE="Arial">Component</FONT>, el
m&eacute;todo handleEvent se llama autom&aacute;ticamente cada
vez que se produce un evento sobre el componente. En este caso,
simplemente vamos a mirar si el evento (sobre nuestro objeto de
clase <FONT FACE="Arial">Ejemplo7</FONT>) fue &quot;cerrar la
ventana&quot;,  que se identifica mediante <FONT FACE="Arial">event.id
= WINDOW_DESTROY</FONT> (una constante est&aacute;tica de la clase
<FONT FACE="Arial">Event</FONT>, y como tal la podemos usar con
el nombre de la clase como <FONT FACE="Arial">Event.WINDOW_DESTROY</FONT>):
<BR>
<PRE>
<FONT SIZE=2>public boolean handleEvent(Event ev) {
        if (ev.id == Event.WINDOW_DESTROY) {
            if (inAnApplet) {
                dispose();
            } else {
                System.exit(0);
            }
        }
        return super.handleEvent(event);
    }
</FONT>
</PRE>
<P>
En ese caso, si nuestro ejemplo se dispar&oacute; como aplicaci&oacute;n
llamamos al m&eacute;todo <FONT FACE="Arial">System.exit(0)</FONT>,
que cierra la aplicaci&oacute;n; y si era un applet llamamos a
<FONT FACE="Arial">dispose()</FONT>, implementaci&oacute;n de
un m&eacute;todo de la interface <FONT FACE="Arial">ComponentPeer</FONT>
que se encarga de remover todos los componentes y la propia ventana.
<P>
Noten que cualquier otro tipo de evento deja seguir hasta <FONT FACE="Arial">return
super.handleEvent(event)</FONT>, que llama al m&eacute;todo <FONT FACE="Arial">handleEvent</FONT>
de la clase madre: as&iacute; como el prefijo <FONT FACE="Arial">this.</FONT>
se refiere a un m&eacute;todo de la propia clase, el prefijo <FONT FACE="Arial">super.</FONT>
llama al m&eacute;todo de la clase madre (aunque est&eacute; redefinido).
En este caso, la llamada se remonta hasta <FONT FACE="Arial">Component.handleEvent</FONT>,
que determina el tipo de evento y llama a uno de los m&eacute;todos
<FONT FACE="Arial">action, gotFocus, lostFocus, keyDown, keyUp,
mouseEnter, mouseExit, mouseMove, mouseDrag, mouseDown</FONT>
o <FONT FACE="Arial">mouseUp</FONT> seg&uacute;n sea apropiado
(y devuelve <FONT FACE="Arial">true</FONT>). Si ning&uacute;n
m&eacute;todo es aplicable, devuelve <FONT FACE="Arial">false</FONT>.
<P>
Es muy com&uacute;n, al redefinir un m&eacute;todo, tener en cuenta
llamar antes o despu&eacute;s al m&eacute;todo de la clase antecesora
para inicializar o terminar alguna tarea.<BR>
<P>
Bueno, hasta aqu&iacute; hay para jugar un poco. Pronto vamos
a ampliar este m&eacute;todo para procesar todos los componentes
que pusimos dentro de la ventana. Jueguen mientras tanto que pronto
nos vemos!
<BR>
<HR>
<P>
Jorge Bourdette
<P>
<A HREF="mailto:jpb@amarillas.com">jpb@amarillas.com</A>
</BODY>
</HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲日本在线| 麻豆精品一区二区三区| 视频一区视频二区在线观看| 国内精品写真在线观看| 91免费在线视频观看| 88在线观看91蜜桃国自产| 亚洲欧洲成人精品av97| 激情偷乱视频一区二区三区| 欧美影院一区二区| 中文字幕一区二区在线播放 | 欧美一级精品大片| 亚洲天堂2014| 国产suv精品一区二区三区| 欧美一区午夜精品| 亚洲第一狼人社区| 91麻豆.com| 中文字幕中文字幕一区二区| 紧缚奴在线一区二区三区| 欧美人妖巨大在线| 一区二区在线观看av| 99久久99久久免费精品蜜臀| 国产日韩欧美电影| 美美哒免费高清在线观看视频一区二区| 日韩精品视频网| 91在线一区二区三区| 久久精品日产第一区二区三区高清版 | 99久久精品国产观看| 91精品国产高清一区二区三区蜜臀| 中文字幕一区免费在线观看| 国产在线一区二区| 欧美色图天堂网| 成人免费视频一区| 欧美一级片免费看| 色天天综合久久久久综合片| 国产精品久久久久久亚洲毛片| 国内精品伊人久久久久av一坑| 亚洲香蕉伊在人在线观| 精品国产91乱码一区二区三区| 国产一区二区三区四区五区入口| 亚洲国产一区二区在线播放| 亚洲国产精品99久久久久久久久| 欧美卡1卡2卡| 欧美精品视频www在线观看| 91免费视频大全| 色综合久久中文字幕综合网| 成人黄色a**站在线观看| 99在线精品观看| 在线成人小视频| 91美女片黄在线| 国产精品99久久久久久似苏梦涵| 亚欧色一区w666天堂| 日韩二区三区四区| 国产精品1区二区.| 91极品视觉盛宴| 欧美精品一级二级| 欧美大白屁股肥臀xxxxxx| 欧美精品一区二区在线观看| 欧美日本在线播放| 精品三级在线看| 综合色天天鬼久久鬼色| 国产亚洲欧美日韩日本| 亚洲国产精品嫩草影院| 国产呦萝稀缺另类资源| 色哟哟一区二区三区| 蜜桃免费网站一区二区三区| 亚洲一区二区av在线| 亚洲私人黄色宅男| 国产夫妻精品视频| 91麻豆123| 日韩欧美国产综合| 免费高清不卡av| 精品国产免费久久| 亚洲国产综合91精品麻豆| 91视频在线观看免费| 夜夜揉揉日日人人青青一国产精品| eeuss国产一区二区三区| 51精品国自产在线| 亚洲无线码一区二区三区| 日日摸夜夜添夜夜添精品视频| 国产精品99久久久| 欧美视频一区二区三区在线观看| 亚洲天堂久久久久久久| 欧美精品色综合| 亚洲尤物在线视频观看| 精品一区中文字幕| 欧美成人三级电影在线| 亚洲卡通欧美制服中文| 国产精品自在在线| 亚洲国产精品二十页| 99久久久精品| 亚洲综合色区另类av| 欧美日韩一区二区三区在线看 | 成人免费福利片| 国产精品免费人成网站| 国产一区二区三区电影在线观看 | 一本到三区不卡视频| 精品毛片乱码1区2区3区| 国产成a人亚洲| 国产精品色哟哟网站| 欧美日韩精品一区二区三区蜜桃| 视频在线在亚洲| 国产清纯在线一区二区www| 99re视频这里只有精品| 日韩精品成人一区二区三区| 欧美日韩三级在线| 国产aⅴ精品一区二区三区色成熟| 国产精品剧情在线亚洲| 一区二区三区欧美久久| 亚洲精品亚洲人成人网在线播放| 国产精品国产自产拍高清av | 午夜精品在线视频一区| 亚洲小说欧美激情另类| 午夜欧美一区二区三区在线播放| 成人免费一区二区三区在线观看| 欧美系列在线观看| 东方aⅴ免费观看久久av| 天天色天天爱天天射综合| 亚洲摸摸操操av| 亚洲精选在线视频| 亚洲精品国产高清久久伦理二区| 日本一区二区成人| 综合中文字幕亚洲| 日韩电影一区二区三区| 国产精品乱码一区二三区小蝌蚪| 久久久久久久久久久99999| 国产情人综合久久777777| 亚洲色图清纯唯美| 97超碰欧美中文字幕| 国产夫妻精品视频| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲国产视频网站| 蜜臀av性久久久久蜜臀aⅴ| 日韩高清中文字幕一区| 丝袜诱惑制服诱惑色一区在线观看 | 成人精品一区二区三区中文字幕 | 欧美午夜不卡视频| 欧美日韩一区二区三区四区| 欧美日韩国产一级片| 日韩欧美激情在线| 国产精品久久久久影视| 亚洲国产综合人成综合网站| 亚洲成人av电影| 久久99精品一区二区三区三区| 91免费视频网| 中文字幕精品综合| 天堂va蜜桃一区二区三区漫画版| 成人黄动漫网站免费app| 欧美一区二区三区人| 香蕉av福利精品导航 | 在线观看视频一区二区 | 91精品蜜臀在线一区尤物| 欧美国产丝袜视频| 国产成人丝袜美腿| www日韩大片| 国产一区二区精品在线观看| 欧美嫩在线观看| 亚洲国产va精品久久久不卡综合 | 久久国产夜色精品鲁鲁99| 欧美精品v国产精品v日韩精品| 亚洲激情五月婷婷| 欧美亚洲高清一区| 亚洲国产视频在线| 欧美二区三区的天堂| 精品一区二区三区免费观看 | 欧美日韩一区二区三区视频| 最新国产成人在线观看| 91超碰这里只有精品国产| 久久精品免费观看| 国产精品久久夜| 在线观看日韩精品| 天天综合色天天| 日本一区二区成人| 欧美精品777| 成人免费黄色大片| 亚洲国产中文字幕在线视频综合| 欧美一区二区三级| 成人高清视频免费观看| 五月天久久比比资源色| 国产午夜精品一区二区三区嫩草| 精品一二三四区| 国产精品网友自拍| 国产成人在线网站| 欧美白人最猛性xxxxx69交| 久久99精品一区二区三区| 久久久99久久精品欧美| 久久精品99国产国产精| 欧美一级日韩免费不卡| 日韩电影免费一区| 精品国产1区二区| 日本乱人伦aⅴ精品| 欧美videos中文字幕| 亚洲男人的天堂在线aⅴ视频| 欧美aⅴ一区二区三区视频| 日本大香伊一区二区三区| 国产人妖乱国产精品人妖| 青青草成人在线观看| 99国内精品久久| 日韩久久免费av| 欧美精品一区二区久久婷婷| www.欧美色图|