Gå til innhold

Custom Knapp:D men ingen ting skjer:(


Anbefalte innlegg

Hvorfor endrer ikke knappen utsende eller skriver tekst til konsollen nar det er lagt til frame'en? hva gjor jeg galt?

 

BTW, det er 2 MouseListeners lagt til classen, gjor det noe?

 

class StorKnapp extends JPanel {
private String strCaption;
private ImageIcon II = new ImageIcon("Stor knapp.png");
 
public StorKnapp(String strCaption) {
 this.strCaption = strCaption;
 setOpaque(false);
 setSize(100, 100);
}

public void paintComponent(Graphics tf) {
 super.paintComponent(tf);
 Font f = new Font("Monospaced", Font.BOLD, 18);
 tf.drawImage(II.getImage(), 0, 0,II.getImageObserver());
 tf.setFont(f);
 tf.drawString(strCaption, 5, 55);
}	

class Listener implements MouseListener  {
 public void mouseClicked(MouseEvent e) {
 	System.out.println("clicked");}
 public void mouseEntered(MouseEvent e) {
 	II = new ImageIcon("Stor knapp_p.png");
 	System.out.println("entered");
 }
 public void mouseExited(MouseEvent e) {
 	II = new ImageIcon("Stor knapp.png");
 	System.out.println("exited");
 }
 public void mousePressed(MouseEvent e) {}
 public void mouseReleased(MouseEvent e) {}
}
}

Lenke til kommentar
Videoannonse
Annonse

Hei

 

Hvis du skal ha en custom knapp hvorfor ikke extende JButton slik at du allerede har noe av funksjonaliteten? Du viser jo ikke all koden du bruker så det er litt vanskelig å gjette hvor det stopper for deg.

 

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;

import javax.swing.JButton;
import javax.swing.JFrame;

public class StorKnapp extends JButton {
private Shape shape;

public StorKnapp(String label) {
 super(label);

 Dimension size = getPreferredSize();
 size.width = size.height = Math.max(size.width, size.height);
 setPreferredSize(size);
 setContentAreaFilled(false);
}

protected void paintComponent(Graphics g) {
 if (getModel().isArmed()) {
 	g.setColor(Color.lightGray);
 } else {
 	g.setColor(getBackground());
 }
 g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
 super.paintComponent(g);
}

protected void paintBorder(Graphics g) {
 g.setColor(getForeground());
 g.drawOval(0, 0, getSize().width - 1, getSize().height - 1);
}


public boolean contains(int x, int y) {
 if (shape == null || !shape.getBounds().equals(getBounds())) {
 	shape = new Ellipse2D.Float(0, 0, getWidth(), getHeight());
 }
 return shape.contains(x, y);
}

public static void main(String[] args) {
 
 JButton button = new StorKnapp("Jackpot");
 button.setBackground(Color.green);

 JFrame frame = new JFrame();
 frame.getContentPane().setBackground(Color.yellow);
 frame.getContentPane().add(button);
 frame.getContentPane().setLayout(new FlowLayout());
 frame.setSize(150, 150);
 frame.setVisible(true);
}
}

Lenke til kommentar
OK, men hvorfor funker ikke disse?

public void mouseClicked(MouseEvent e) {

public void mouseEntered(MouseEvent e) {

public void mouseExited(MouseEvent e)

5925332[/snapback]

 

Du har jo lagd klassen, du bruker den bare ikke.

 

addMouseListener(new Listener());

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...