Misoxeny Skrevet 25. september 2013 Del Skrevet 25. september 2013 (endret) Hei. Holder på med et basic lite program som skal tegne opp polygoner og deretter kunne endres med basistransformasjoner. Er helt i startfasen, og har tegnet opp et forhåndslaget polygon. Dette kan jeg flytte mot høyre ved å klikke med musen. Det jeg vil gjøre er å kunne flytte det med høyre museknapp i stedet, men det skjer rett og slett ingenting når jeg trykker. Poenget er at det nå skal printes ut en linje når jeg trykker høyre pil: Slik ser koden ut: http://pastebin.com/WxT0GjEJ import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Polygon; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JFrame; import javax.swing.JPanel; class PolygonPanel extends JPanel implements MouseListener{ Polygon p; public PolygonPanel(){ p = new Polygon(); p.addPoint(10, 10); p.addPoint(100,50); p.addPoint(50,100); addMouseListener(this); addKeyListener(new MKeyListener()); } class MKeyListener extends KeyAdapter{ public void keyPressed(KeyEvent e){ int keyCode = e.getKeyCode(); if(keyCode==e.VK_RIGHT){ System.out.println("FFFFUUUUU"); } } } public void paintComponent(Graphics g){ super.paintComponent(g); setBackground(Color.white); g.fillPolygon(p); } @Override public void mouseClicked(MouseEvent arg0) { System.out.println("hei"); for (int i = 0; i < p.npoints; i++) { p.xpoints[i] = p.xpoints[i]+10; repaint(); } } @Override public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } } class PolygonFrame extends JFrame{ public PolygonFrame(){ setTitle("Polygoner"); setSize(700, 600); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); Container contentPane = getContentPane(); contentPane.add(new PolygonPanel()); } } public class Polygonfun { public static void main(String[] args) { JFrame frame = new PolygonFrame(); frame.setVisible(true); } } Regner med feilen er at det rett og slett mangler en liten linje et eller annet sted, men grunnet begrenset javakunnskap greier jeg ikke å se hva som mangler. Jeg har prøvd diverse fremgangsmåter uten hell. Noen som kan hjelpe? Takk! Endret 25. september 2013 av Misoxeny Lenke til kommentar
Dundas Skrevet 25. september 2013 Del Skrevet 25. september 2013 I stedet for å linke til koden, kan du lime den inn i innlegget i en code-tag. På den måten blir ikke innlegget ditt verdiløst, om linken av en eller annen grunn skulle bli ugyldig. Lenke til kommentar
Stetus Skrevet 25. september 2013 Del Skrevet 25. september 2013 Problemet ditt er at du ikke får trigget et KeyEvent uten at komponenten er i fokus. en JFrame har ikke fokus, så for å få koden din til å fungere trenger du en setFocuable(true) så vidt jeg se class PolygonPanel extends JPanel implements MouseListener{ Polygon p; public PolygonPanel(){ p = new Polygon(); p.addPoint(10, 10); p.addPoint(100,50); p.addPoint(50,100); this.setFocusable(true); //denne du mangler addMouseListener(this); addKeyListener(new MKeyListener()); } 1 Lenke til kommentar
Misoxeny Skrevet 25. september 2013 Forfatter Del Skrevet 25. september 2013 Fungerte utmerket, takk! 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å