Gente, estou com uma outra dúvida…
Só explicando o por que dos tópicos : Eu decidi ler o livro Killer java do começo e estou estudando os códigos e tentando aprender na prática, e percebi que tem muitas coisas que eu sei na teoria, mas na prática não.
Eu Também imprimi todos os tutoriais do pontoV e estou re-lendo novamente.
Enfim… O problema que estou agora é outro rsrsrsrs;
Tenho um JFrame.
Nesse JFrame eu tenho algumas labels e UM BOTAO e um menuBar.
Quando eu desenho o Buffered Image nele, ele apaga tudo , menos o Botao. E então ele desenha a imagem perfeitamente.
Achei isso, enquanto pesquisava :
[quote]ViniGodoy
Moderador
Membro desde: 11/12/2006 08:22:01
Mensagens: 23415
Localização: Curitiba/PR
Online
Só um outro comentário. O JPanel e o Graphics não guardam estado. Há duas maneiras de não perder o que é desenhado:
- Criar uma lista de objetos a serem desenhados. E então pinta-los sempre que o método paintComponent for chamado.
- Desenhar sobre uma BufferedImage, e só repintar essa imagem no paintComponent;
A opção 1 provavelmente é a melhor no seu caso. Você precisará guardar os circuitos existentes e suas propriedades, e dar a possibilidade de mover alguns circuitos ou deletá-los. Portanto, você já terá que guardar estado do que está desenhado de um jeito ou de outro.
A opção 2 é melhor se você estiver montando um paint. Usa-se um componente temporário, até que o usuário confirme o desenho. Após isso, copia-se o desenho final para o BufferedImage e o componente original feito para desenha-lo é “esquecido”. Não é mais possível redimensionar uma forma posicionada na tela.[/quote]
Essa opção 2, eu acho que é o que estou fazendo…
Eu ja sei usar a opção 1, mas eu quero a 2.
Como posso fazer isso?
Vou postar o código, na View,vou limpar o main e deixar só o necessário, ok ?
VIEW :
[code]package MainView;
import Controller.MainController;
import java.awt.Graphics2D;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
public class MainView extends javax.swing.JFrame implements KeyListener {
private static final long serialVersionUID = 1L;
private MainController mainController;
private int insetTop,insetRight;
public MainView() {
initComponents();
insetTop = getInsets().top;
insetRight = getInsets().right;
mainController = new MainController(this,insetRight,insetTop);
addKeyListener();
createBufferStrategy(3);
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
BufferStrategy bf = getBufferStrategy();
Graphics2D g = null;
try {
g = (Graphics2D) bf.getDrawGraphics();
BufferedImage snakeImage = mainController.snake.getSnakeImage();
//Graphics2D createGraphics = snakeImage.createGraphics();
g.drawImage(snakeImage,100,100, rootPane);
} finally {
g.dispose();
}
if (!bf.contentsLost()) {
bf.show();
}
}
++ public static void main(String args[]) { }
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenu jMenu3;
private javax.swing.JMenuBar jMenuBar1;
// End of variables declaration
public final void addKeyListener() {
addKeyListener(this);
}
@Override
public void keyTyped(KeyEvent e) {
System.out.println("Key Typed :" + e.getKeyCode());
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Key Pressed :" + e.getKeyCode());
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Key Released :" + e.getKeyCode());
}
}
[/code]
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package Objetos;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/**
*
-
@author André
*/
public class Snake {private int positionX;
private int positionY;
private Color color;
private String snakeDirectory = “D:\Arquivos E Programas\MeusProjetosJava\ImagesVideosAudio\Images\mySnake.gif”;public Snake(int posX, int posY, String colour) {
positionX = posX;
positionY = posY;
color = Color.getColor(colour);
}public BufferedImage getSnakeImage() {
try {
File snakeImageFile = new File(snakeDirectory);
BufferedImage im = ImageIO.read(snakeImageFile);
return im;} catch (Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); } return null;}
public void getSnake() {
}
}
[/code]
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package Controller;
import MainView.MainView;
import Objetos.Snake;
/**
*
-
@author André
*/
public class MainController
{
private MainView mainView;
public Snake snake;public MainController(MainView mv,int posX,int posY)
{
mainView = mv;
snake = new Snake(posX, posY,“Black”);
}
}
[/code]