Re: Paiting question



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();
}
});
}
}

.



Relevant Pages

  • Paiting question
    ... private Image background; ... public void mouseReleased{ ... private Dimension dimension = new Dimension ... private void fireDedoChanged(int dedo) { ...
    (comp.lang.java.gui)
  • Re: Please suggest a layout manager
    ... Dimension psize = new Dimension; ... Insets insets = parent.getInsets; ... public void layoutContainer{ ... int w = Math.max.width, msize.width) - ...
    (comp.lang.java.programmer)
  • Re: Including CheckNodeTree.java to a Matlab GUI
    ... boolean isSelected, boolean expanded, boolean leaf, int row, ... expanded, leaf, row, hasFocus); ... Dimension d_check = check.getPreferredSize; ... public void setBackground{ ...
    (comp.soft-sys.matlab)
  • Re: JFrame Resize Issues
    ... private Rectangle positRectangle; ... private JMenuItem FilePlayback; ... static public void main{ ... public void componentHidden(ComponentEvent evt) { ...
    (comp.lang.java.programmer)
  • Re: NotSerializable object issue...
    ... private static final NoopOutputStream DUMMY_OUTPUT_STREAM = new ... public SerializableCheckerthrows IOException { ... public void writeObjectthrows IOException { ... private int counter; ...
    (comp.lang.java.programmer)