Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Nieregularny kształt komponentu


Rekomendowane odpowiedzi

Opublikowano

Witam!
Jak można zrobić nieregularny kształt któregoś z komponentów? Próbowałem używając klasy Polygon.

 

 

 

Polygon c;
public void paintComponent(Graphics g){
		Graphics2D g2D = (Graphics2D)g;
		int[] cx = {0, 20, 20, 40, 40, 0};
		int[] cy = {0, 0, 50, 50, 100, 100};
		c = new Polygon(cx, cy, 6);
		g2D.setColor(Color.BLACK);
		g2D.drawPolygon(c);
		g2D.setColor(Color.WHITE);
		g2D.fillPolygon(c);

	}

 

 

 

Do każdej metody zaimplementowanej z interfejsu MouseListener wprowadziłem ten kod:

 

 

Object source = me.getSource();
		if(source == c){
			test.setVisible(true);
		}

 

 

i nic się nie dzieje :/

 

 

Chciałbym nadać ten kształt na jakiś komponent, np: JLabel, bo tam działa mi MouseListener. No chyba, że jest jakiś łatwiejszy sposób na zrobienie tego :)

Opublikowano

A mógłbyś jakoś wyjaśnić ten kod? Np:

 

 

private Path2D.Double makeStar(int r1, int r2, int vc) {

        int or = Math.max(r1, r2);

        int ir = Math.min(r1, r2);

        double agl = 0.0;

        double add = 2*Math.PI/(vc*2);

        Path2D.Double p = new Path2D.Double();

        p.moveTo(or*1, or*0);

        for(int i=0;i<vc*2-1;i++) {

            agl+=add;

            int r = i%2==0?ir:or;

            p.lineTo(r*Math.cos(agl), r*Math.sin(agl));

        }

        p.closePath();

        AffineTransform at = AffineTransform.getRotateInstance(-Math.PI/2,or,0);

        return new Path2D.Double(p, at);

    }

 

 

Nie ogarniam za co odpowiadają te zmienne. Do czego służy AffineTransform?

Opublikowano

A mógłbyś jakoś wyjaśnić ten kod? Np:

 

 

private Path2D.Double makeStar(int r1, int r2, int vc) {

        int or = Math.max(r1, r2);

        int ir = Math.min(r1, r2);

        double agl = 0.0;

        double add = 2*Math.PI/(vc*2);

        Path2D.Double p = new Path2D.Double();

        p.moveTo(or*1, or*0);

        for(int i=0;i<vc*2-1;i++) {

            agl+=add;

            int r = i%2==0?ir:or;

            p.lineTo(r*Math.cos(agl), r*Math.sin(agl));

        }

        p.closePath();

        AffineTransform at = AffineTransform.getRotateInstance(-Math.PI/2,or,0);

        return new Path2D.Double(p, at);

    }

 

 

Nie ogarniam za co odpowiadają te zmienne. Do czego służy AffineTransform?

http://pl.wikipedia.org/wiki/Przekszta%C5%82cenie_afiniczne

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...