Código fuente de inicio del hilo
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>
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) { p>
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>
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. . .