Re: Paiting question
- From: "Zé" <jose.arthur@xxxxxxxxx>
- Date: 10 Jul 2006 12:31:52 -0700
Looking again the sample code I found that they used ImageIcon, not
Image. Now works.
Sorry for bother.
Zé wrote:
Hi all.
I´m new to Swing and I made a subclass of JComponent. For now its a
class that paints a image and listen to the mouse.
My problem is: my class gets painted only when I minimize, maximize or
something like that.
Which method do I need call from constructor to get my class painted
correctly?
Thanks.
---
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class JDigital extends JComponent implements MouseListener {
/** Qual o dedo selecionado. 0 para nenhum */
private int dedo = 0;
/** Imagem de fundo */
private Image background;
/** Creates a new instance of JDigital */
public JDigital() {
// sempre opaco
super.setOpaque(true);
Toolkit toolkit = Toolkit.getDefaultToolkit();
background =
toolkit.getImage(this.getClass().getResource("maos.jpg"));
// atualiza a interface
repaint();
}
/** Nao fazer nada */
public void mouseReleased(MouseEvent e) {
}
/** Nao fazer nada */
public void mousePressed(MouseEvent e) {
}
/** Nao fazer nada */
public void mouseExited(MouseEvent e) {
}
/** Nao fazer nada */
public void mouseEntered(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
fireDedoChanged(1);
}
/** Faz o desenho */
@Override
protected void paintComponent(Graphics g) {
g.drawImage(background, 0, 0, 400, 300, null);
}
/** Tamanho do componente */
private Dimension dimension = new Dimension(400, 300);
@Override
public Dimension getPreferredSize() {
return dimension;
}
@Override
public Dimension getMinimumSize() {
return dimension;
}
/** Sempre opaco esse componente, nao atualizar */
@Override
public void setOpaque(boolean isOpaque) {
}
private void fireDedoChanged(int dedo) {
if (dedo != this.dedo) {
firePropertyChange("dedo", this.dedo, dedo);
this.dedo = dedo;
}
}
/**
* Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.
*/
private static void createAndShowGUI() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JDigital digital = new JDigital();
frame.add(digital);
frame.addMouseListener(digital);
digital.addPropertyChangeListener("dedo", new
PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
JOptionPane.showMessageDialog(frame,
"Dedo: " + evt.getNewValue());
}
});
frame.pack();
frame.setVisible(true);
}
/** Main para testes */
public static void main(String... args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
.
- References:
- Paiting question
- From: Zé
- Paiting question
- Prev by Date: Re: Could I drag and drop FROM Java Swing list onto a Windows Explorer?
- Next by Date: Re: busy cursor
- Previous by thread: Paiting question
- Index(es):
Relevant Pages
|
|