Richard87 Skrevet 14. april 2006 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) {} } }
HV Skrevet 15. april 2006 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); } }
Richard87 Skrevet 15. april 2006 Forfatter 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)
HV Skrevet 15. april 2006 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());
Richard87 Skrevet 15. april 2006 Forfatter Skrevet 15. april 2006 OMG, seff... tusen takk for hjelpen...
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å