Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de inicio del hilo

Código fuente de inicio del hilo

importar java.awt.*;

importar java.awt.event.*;

importar java.awt.geom.*;

importar java.util . *;

Importar javax . swing *;

/**

*Demostración de bolas pequeñas de subprocesos múltiples. Abra el Administrador de tareas de Windows para ver los cambios de hilo. Puede buscar, ejecutar el método()/. Start()

*

*Du: Experiencia en habilidades de programación: la llamada generación de una bola pequeña es un objeto nuevo, y sus atributos llevan las coordenadas, el color, el contenedor y otros. parámetros de la pelota.

*

*Una clase cuyas propiedades se utilizan como contenedores de parámetros y cuyas funciones se completan mediante métodos....

* */

//Ejecuta esta clase

Clase pública BouncePress {

//

Public static void main(String[] args) {

JFrame frame = new BouncePressFrame(); //Generar ventana. Ejecutar la construcción. -Lógica empresarial.

frame.setdefaultcloseoperative(JFrame.EXIT_ON_CLOSE);//Similar a

//Ventana

//Escucha

frame .show ();

}

}

Class BouncePressFrame extiende JFrame {

Lienzo de campo de béisbol privado;

public BouncePressFrame() {

setSize(600, 500); //Tamaño de la ventana

setTitle("bola que rebota");

panel de contenido del contenedor = getContentPane(); // Las ventanas batientes no pueden colocar cosas directamente, solo se pueden colocar en el ContentPane de arriba.

canvas = new ball press canvas(); //Generar un nuevo panel. -Canvas

contentPane.add(canvas, BorderLayout. Center); //Agrega este panel al centro de la ventana.

Panel de botones JPanel = new JPanel(); //Generar un nuevo panel. -Panel de botones

//Llame a este método addButton.

Agregar botón(buttonPanel, "Inicio", //Generar botón "Inicio"--Agregar panel panel de botones.

nueva acción oyente(){//|-& gt; Vincula el botón al detector de acciones.

Operación de anulación pública realizada por el objeto contenedor de bolas (actioneventevt) {/| Al procesar el evento, ejecuta el método - addBall(). ; Generar una bola (objeto de parámetro) -> Agregar a la lista -> Comience a dibujar la bola

}

});// Presione una vez, addBall() una vez -> generar una nueva bola -> agregar a la lista -> comenzar a dibujar esta nueva bola.

//-& gt; BallPressThread-> Run() de Ball (objeto de parámetro). mover () -> Cada vez que dibujes, muévete primero, luego juzga y luego dibuja.

//-& gt; Objeto Canvas de la clase BallPressCanvas.

paint()->Ajusta automáticamente el paintComponent(Graphics) de la clase BallPressCanvas.

// g) método.

//-& gt; En este método, todas las bolas, la I-ésima bola, se eliminan de la lista, -->;

// Método .draw() ->; Dibuja una bola ajustando el método Graphics2D. -Usar color/

addButton(buttonPanel, "Express", new ActionListener() {

acción de anulación pública realizada (ActionEvent evt){

addBall(thread .NORM_PRIORITY + 2, color . rojo);

}

});

addButton(buttonPanel, "Cerrar", nuevo ActionListener() {

p>

acción de anulación pública realizada(ActionEvent evt){

system exit(0);

}

}) ;

contentPane.add(buttonPanel, BorderLayout. South);

}

public void addButton(contenedor c, título de cadena, oyente ActionListener) {

Botón JButton = new JButton(título); //Generar un botón.

c.add(button); //Agregar al contenedor.

button.addActionListener(listener); //Botón para vincular el oyente de acción.

}

/* *Método de negocio principal. */

public void addBall(int prioridad, Color color) {

//Generar una pelota pequeña (objeto de parámetro)

Campo de béisbol b = nueva pelota de béisbol field(canvas, color); //Generar un objeto BallPress, transportarlo e inicializarlo.

//Dibuja una bola esférica, parámetros requeridos: componente del contenedor, color requerido: negro/rojo.

//La pelota se añade a la lista.

canvas . add(b); //Agrega un objeto BallPress al ArrayList del lienzo del panel.

ballpress thread thread = new ballpress thread(b); // Genera un objeto BallPressThread, una clase de hilo para dibujar bolas. Pase el objeto BallPress (lleva la información necesaria para dibujar la bola.

//Contenedor, parámetros de color).

thread.setPriority(priority);

thread . start(); //Llama a run() y la pelota comienza a moverse

//Tira de la inicio del hilo de la bola. -> Ejecución de BallPressThread() -> bola (objeto de parámetro). mover ()->Mover primero, luego dibujar. canvas . paint-& gt;Clase de lienzo del campo de béisbol

}

}

//La clase de hilo para pintar la pelota.

clase Rosca de extensión BallPressThread {

Campo de béisbol privado b

Línea de presión de pelota pública (varilla de presión de pelota) {

b = aBall

}

//Comienza el sorteo de la bola.

Public void run(){

Prueba {

for(int I = 1;i<= 1000;I++) {//Dibuja 1000 veces.

b . move(); // Cada vez que dibujas, muévete primero, luego juzga y luego dibuja.

Sleep(5); //Entonces la pelota se mueve más lento que Bounce.java.

}

} captura (InterruptedException e) {

}

}

}

//clase de panel abatible.

//Función 1) Objeto panel de esta clase. método paint() -> dibuja automáticamente el panel y ajusta automáticamente el método paintComponent (graphics

//g), -> anula este método para dibujar el panel (y sus componentes).

//Rol 2) El atributo ArrayList bolas de este objeto de clase: el contenedor de bolas (objeto de parámetro).

clase BallPressCanvas extiende JPanel {

Lista de matrices privadas bolas = new ArrayList()

public void add(BallPress b) {

balls.add(b); //Agrega una bola a la lista de la matriz. Cuando presionas el botón y agregas varias bolas, todas se guardan en esta lista.

}

//Anular el método paintComponent() de javax.swing.JComponent

//El método paint() llama automáticamente a este método.

componente de pintura vacía pública (Gráficos g){

super componente de pintura (g);

gráficos 2d G2 =(gráficos 2d)g;

p>

for(int I = 0;i<balls . size();I++) {//Loop

prensa de pelota b =(prensa de pelota)bolas .get(I) ;// Toma la I-ésima bola de la lista,

b. draw(G2); //Dibuja esta bola.

}

}

}

/**

*Dibuja una pelota.

*

*Dibuja una pequeña bola de color en el lienzo.

*

*Los atributos se pueden utilizar para llevar los parámetros necesarios para dibujar la pelota.

*

*

*

* @autor Du Kangan

*

*/

Campo de béisbol de clase{

Lienzo de componente privado;

Color privado;

privado int x = 0;

p>

private int y = 0;

private int dx = 2;

private int dy = 2;

//Construir el contenedor de inicialización Parámetros de color.

Campo de béisbol público (componente c, color)

canvas = c

color = aColor

}

//Establece la posición y dibuja la pelota.

Dibujo de vacío público (Graphics2D g2) {

g2.setColor(color);

g2.fill(new Ellipse2D.Double(x, y, 15 , 15)); // elipse: elipse

}

//Mueve la pelota.

//Cada vez que dibujes, muévete primero, luego juzga y luego dibuja.

//Cada vez que se ejecuta este método, se dibujan las coordenadas del punto inicial (x, y) de la bola, y se suma +2 cada vez, es decir, se mueve diagonalmente hacia la parte inferior derecha.

Public void move(){

x+= dx; //x = x+dx; dibuja las coordenadas del punto inicial (x, y) de la bola, cada coordenada + 2. , Es decir, muévase en diagonal hacia la parte inferior derecha.

y+= dy; //y = y+dy;

if(x & lt; 0) {//La pelota ha llegado al límite izquierdo. De acuerdo, comience a dibujar desde el borde izquierdo.

x = 0;

dx =-dx; //El valor de cambio de la abscisa de la bola se invierte. Iniciar movimiento inverso.

}

if(x+15 & gt; = canvas.getWidth()) {//El lado derecho de la pelota ha llegado al lado derecho del tablero de dibujo.

x = canvas . getwidth()-15;

dx =-dx; //Iniciar movimiento inverso.

}

if(y & lt; 0) {//Garantizado, extraído del marco superior.

y = 0;

dy =-dy

}

if(y+15 & gt; = lienzo.getHeight; ()) {//La pelota ha llegado a la parte superior del tablero de dibujo.

y = lienzo . obtener altura()-15

dy =-dy;

}

lienzo pintura (lienzo). .get gráficos()); //Dibuja el objeto del panel lienzo-(y todos los componentes que contiene)

///.método .paint(), llamado automáticamente.

}

}

/*Importar Java . p>

p>

Importar Java.awt.geom.*;

Importar Java.util.*;

Importar javax.swing.*;

* //**

* Hilo único, no se puede buscar la demostración de bola pequeña, método run()/. start()

*//*

Rebote de clase pública {

Public static void main(String[] args) {

Marco JFrame = nuevo marco de rebote();

frame . setdefaultcloseoperation(JFrame. EXIT _ ON _ CLOSE //Similar a

//Window

); //Oyente

frame . show();

}

}

Pregunta de nuevo si no entiendes. . .