Exemplo Threads com Swing:

Documentos relacionados
Exemplo com SWING 1: Fazer uma aplicação, em Java, que tenha, na tela, uma JProgressBar, um JLabel e um JButton.

package br.com.cadastro.visao;

HABILITANDO A IDE DO ECLIPSE

MÓDULO 4 SWING Parte 3

Is Event Dispatcher Threade (Animation)

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

Técnicas de Programação II

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

A classe JTextField

Interfaces Gráficas com Swing. Professor Leonardo Larback

Threads. O que é uma Thread? Paralelismo

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Múltiplas Linhas de Execução Java (Threads)

Programação Orientada a Objetos

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Interfaces Gráficas POO. Prof. Márcio Delamaro

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Programação Concorrente/Paralela em Java

Adding User Interaction

Programação Estruturada e Orientada a Objetos

Crie dois pacotes: jogo e imagens Coloque as imagens da cobra, da fruta e da parede no pacote imagens Crie uma nova classe chamada Cobra no pacote

JTextArea JMenuBar JTable JDesktopPane e JInternalFrame

Principais Classes Swing AWT

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

Concorrência em Java. Threads em Java

Elaborando as Interfaces Aulas 43, 44 e 45

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

MsC. João Maria MsC. Liviane Melo

Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.

Introdução à Programação Gráfica em Java

Linguagem de Programação II Implementação

Elaborando as Interfaces Aulas 31, 32 e 33

Network Programming. Conceitos Básicos A classe InetAddress Programação de Socket TCP Programação de Socket UDP

Componentes GUI A aparência e maneira como um usuário pode interagir com componentes AWT diferem de acordo com a plataforma. Componentes Swing permite

JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

Linguagem Java - Introdução

Universidade da Beira Interior. Sistemas Distribuídos

Programação concorrente em Java

CAPA PARA OS CABOS DA CABEÇA

Gerenciadores de Layout

Tratamento de Exceções

Programação Concorrente com Thread Java. Luiz Affonso Guedes Sistemas Distribuidos

A TAMPA DO COMANDO À DISTÂNCIA

Layout. Programação Orientada a Objetos Java. Prof. Geraldo Braz Junior. Baseado em material original de João Carlos Pinheiro CEFET/MA

Programação Orientada a Objetos II

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Exercício de Estrutura de dados. Java Fila

No final deste curso, saberás criar programas através da linguagem de programação Java.

Java - Swing. Raphaela Galhardo raphaela@j2eebrasil.com.br

Estruturas de Controle em c#

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Desenvolvimento de Aplicações Desktop

Agregação, Composição e Associação

Transcrição:

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 java.awt.font; 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; 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); @Override public void run() { mexebolinha();

package controller; import java.awt.event.actionevent; import java.awt.event.actionlistener; 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(); @Override public void actionperformed(actionevent e) { botaobolinha();

Exemplo com Threads Aninhadas: Fazer uma aplicação, em Java, que tenha, na tela, uma JProgressBar, um JLabel e um JButton. A aplicação deve ter duas Threads. A primeira, fará com que a JProgressBar incremente, num intervalo de 20 ms. A segunda, enquanto a primeira estiver viva, irá alternando 3 palavras em um tempo de exibição constante, de 100 ms. O Botão deve iniciar a chamada das Threads e fazer com que ele próprio desapareça. package view; import java.awt.eventqueue; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.border.emptyborder; import java.awt.font; import javax.swing.jprogressbar; import controller.progressbarcontroller; public class Tela 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 { Tela frame = new Tela(); frame.setvisible(true); catch (Exception e) { e.printstacktrace(); ); /** * Create the frame. */ public Tela() { 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); final JLabel lblnewlabel = new JLabel(" "); lblnewlabel.setfont(new Font("Tahoma", Font.BOLD, 18)); lblnewlabel.setbounds(10, 132, 98, 49); contentpane.add(lblnewlabel); final JProgressBar progressbar = new JProgressBar(); progressbar.setbounds(10, 35, 188, 42); contentpane.add(progressbar); JButton btniniciar = new JButton("In\u00EDcio"); btniniciar.setbounds(10, 228, 89, 23); contentpane.add(btniniciar); ProgressBarController pbcontroller = new ProgressBarController(lblNewLabel, progressbar, btniniciar); btniniciar.addactionlistener(pbcontroller);

package controller; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jprogressbar; public class ProgressBarController implements ActionListener{ private JLabel lblnewlabel; private JProgressBar progressbar; private JButton btniniciar; public ProgressBarController(JLabel lblnewlabel, JProgressBar progressbar, JButton btniniciar){ this.lblnewlabel = lblnewlabel; this.progressbar = progressbar; this.btniniciar = btniniciar; private void acaobarra(){ btniniciar.setenabled(false); Thread tbanner = new ThreadBanner(lblNewLabel, progressbar, btniniciar); tbanner.start(); @Override public void actionperformed(actionevent arg0) { acaobarra(); package controller; import javax.swing.jprogressbar; public class ThreadProgressBar extends Thread { private JProgressBar progressbar; public ThreadProgressBar(JProgressBar progressbar) { this.progressbar = progressbar; private void preenchebarra() { for (int i = 1; i <= 100; i++) { progressbar.setvalue(i); try { Thread.sleep(20); catch (InterruptedException ex) { ex.printstacktrace(); @Override public void run() { preenchebarra();

package controller; import javax.swing.jprogressbar; public class ThreadBanner extends Thread { private JLabel lblnewlabel; private JProgressBar progressbar; private JButton btniniciar; public ThreadBanner(JLabel lblnewlabel, JProgressBar progressbar, JButton btniniciar) { this.lblnewlabel = lblnewlabel; this.progressbar = progressbar; this.btniniciar = btniniciar; private void gerabanner() { btniniciar.setenabled(false); Thread tbarra = new ThreadProgressBar(progressBar); tbarra.start(); int contador = 1; String texto = ""; while (tbarra.isalive()) { switch (contador) { case 1: texto = "Boa"; break; case 2: texto = "Tarde"; break; case 3: texto = "Galera"; lblnewlabel.settext(texto); contador++; if (contador == 4) { contador = 1; try { Thread.sleep(100); catch (InterruptedException ex) { ex.printstacktrace(); btniniciar.setenabled(true); @Override public void run() { gerabanner();

: 1) Fazer uma aplicação que rode 5 Threads que cada uma delas imprima no console o seu número. 2) Fazer uma aplicação que insira números aleatórios em uma matriz 3 x 5 e tenha 3 Threads, onde cada Thread calcula a soma dos valores de cada linha, imprimindo a identificação da linha e o resultado da soma. Pearson Education Sistemas Operacionais Modernos 2ª Edição 22

: 3) Fazer uma aplicação de uma corrida de sapos, com 5 Threads, cada Thread controlando 1 sapo. Deve haver um tamanho máximo para cada pulo do sapo (em metros) e a distância máxima para que os sapos percorram. A cada salto, um sapo pode dar uma salto de 0 até o tamanho máximo do salto (valor aleatório). Após dar um salto, a Thread, para cada sapo, deve mostrar no console, qual foi o tamanho do salto e quanto o sapo percorreu. Assim que o sapo percorrer a distância máxima, a Thread deve apresentar que o sapo chegou e qual sua colocação. Pearson Education Sistemas Operacionais Modernos 2ª Edição 23

: 4) Utilizando o Java SWING, criar uma tela, semelhante à tela abaixo, para criar uma corrida de carros, tipo drag race. A aplicação deve ter a distância que os carros devem correr e a velocidade máxima dos carros. Os carros (Jlabel) devem, a cada 100 ms, dar uma arrancada de velocidade que pode estar entre 0 e a velocidade máxima (definida aleatoriamente). Assim que o primeiro carro chegar, o JTextField Vencedor deve receber o nome deste e o JTextField Perdedor receberá o nome do outro carro. Assim que a corrida se inicia, o botão Correr deve sumir. Pearson Education Sistemas Operacionais Modernos 2ª Edição 24

4) Pearson Education Sistemas Operacionais Modernos 2ª Edição 25

: 5) Fazer, com o Java SWING, uma aplicação de caça-níquel, conforme figura abaixo. O caça níquel tem 3 JTextFields, independentes, que giram, aleatoriamente, de 1 a 150 vezes e apresentará um número de 1 a 7. Quando iniciado, o botão Jogar deve desaparecer. Pearson Education Sistemas Operacionais Modernos 2ª Edição 26