Gå til innhold

Anbefalte innlegg

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 av Misoxeny
Lenke til kommentar
Videoannonse
Annonse

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());
	}
	
  • Liker 1
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...