Exercicio

1 resposta
L

Galera estudo ads e neste semestre estou perdida,alguem me ajude a entender como eu crio

Exemplo Threads com Swing:

Fazer uma aplicação Java com 2 JLabel, com um ponto final, em formatação Negrito, tamanho 70 e um JButton. A aplicação

deve conter 2 Threads e um método. O método deve fazer o ponto dar uma volta completa em 13 passos, onde os 3

primeiros devem fazer o ponto descer 10 px por vez, os 4 seguintes devem fazer o ponto andar 20 px à direita, por vez,

os 3 passos seguintes devem fazer o ponto subir 10 px por vez e, por fim, os 4 seguintes devem fazer o ponto andar 20 px

à esquerda, retornando ao ponto de partida. Cada Thread deve chamar o método para movimentar um JLabel diferente.

O JButton inicia a aplicação.

package view;

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.JButton;

import controller.BolinhaController;

public class Principal extends JFrame {

private static final long serialVersionUID = 1L;

private JPanel contentPane;

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

Principal frame = new Principal();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

public Principal() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(null);

JLabel lblBolinha1 = new JLabel(".");

lblBolinha1.setFont(new Font(Tahoma, Font.BOLD, 70));

lblBolinha1.setBounds(58, 64, 68, 74);

contentPane.add(lblBolinha1);

JLabel lblBolinha2 = new JLabel(".");

lblBolinha2.setFont(new Font(Tahoma, Font.BOLD, 70));

lblBolinha2.setBounds(313, 64, 68, 74);

contentPane.add(lblBolinha2);

JButton btnIniciar = new JButton(Iniciar);

btnIniciar.setBounds(0, 0, 89, 23);

contentPane.add(btnIniciar);

BolinhaController bolinhaController =

new BolinhaController(lblBolinha1, lblBolinha2, btnIniciar);

btnIniciar.addActionListener(bolinhaController);

}

}

package controller;

import java.awt.Rectangle;

import javax.swing.JButton;

import javax.swing.JLabel;

public class ThreadBolinha extends Thread {

private JLabel lblBolinha;

private JButton btnIniciar;

public ThreadBolinha(JLabel lblBolinha, JButton btnIniciar) {

this.lblBolinha = lblBolinha;

this.btnIniciar = btnIniciar;

}

private void mexeBolinha() {

btnIniciar.setEnabled(false);

Rectangle posicao;

posicao = lblBolinha.getBounds();

lblBolinha.setBounds(posicao);

int contadorDeMov = 0;

while (contadorDeMov <= 12) {

if (contadorDeMov <= 2) {

posicao.y = posicao.y + 10;

} else {

if (contadorDeMov > 2 && contadorDeMov <= 6) {

posicao.x = posicao.x + 20;

} else {

if (contadorDeMov > 6 && contadorDeMov <= 9) {

posicao.y = posicao.y - 10;

} else {

if (contadorDeMov > 9 && contadorDeMov <= 12) {

posicao.x = posicao.x - 20;

}

}

}

}

lblBolinha.setBounds(posicao);

try {

Thread.sleep(500);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

contadorDeMov++;

}

btnIniciar.setEnabled(true);

}

<a class="mention" href="/u/override">@Override</a>

public void run() {

mexeBolinha();

}

}

package controller;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JLabel;

public class BolinhaController implements ActionListener{

private JLabel lblBolinha1;

private JLabel lblBolinha2;

private JButton btnIniciar;

public BolinhaController(JLabel lblBolinha1,

JLabel lblBolinha2, JButton btnIniciar) {

this.lblBolinha1 = lblBolinha1;

this.lblBolinha2 = lblBolinha2;

this.btnIniciar = btnIniciar;

}

private void botaoBolinha(){

Thread t1 = new ThreadBolinha(lblBolinha1, btnIniciar);

Thread t2 = new ThreadBolinha(lblBolinha2, btnIniciar);

t1.start();

t2.start();

}

<a class="mention" href="/u/override">@Override</a>

public void actionPerformed(ActionEvent e) {

botaoBolinha();

}

}

1 Resposta

E

Não é bem assim, é algo bem denso, você tem que estudar por partes… isso vai te dar uma clareada.

Criado 18 de setembro de 2017
Ultima resposta 27 de set. de 2018
Respostas 1
Participantes 2