Richard87 Skrevet 14. april 2006 Del Skrevet 14. april 2006 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
HV Skrevet 15. april 2006 Del Skrevet 15. april 2006 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
Richard87 Skrevet 15. april 2006 Forfatter Del Skrevet 15. april 2006 OK, men hvorfor funker ikke disse? public void mouseClicked(MouseEvent e) { public void mouseEntered(MouseEvent e) { public void mouseExited(MouseEvent e) Lenke til kommentar
HV Skrevet 15. april 2006 Del Skrevet 15. april 2006 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
Richard87 Skrevet 15. april 2006 Forfatter Del Skrevet 15. april 2006 OMG, seff... tusen takk for hjelpen... Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå