Avatar billede fireworld Nybegynder
08. oktober 2001 - 18:42 Der er 9 kommentarer og
1 løsning

Fillrect.... flyt rect...

ok...

først ...

hvis nu jeg har en

public void paint(Graphics g)
{
g.drawRect(10,10,10,10);
}

Hvordan giver jeg den så en bestemt baggrunds farve...

det var nr 1


det næste er hvordan flytter jeg den..

der skal man vel ahve lavet ngoet i ens root... altså

Rectangle r = new Rectangle();

eller lign.. og så bruge setbounds eller move eller lign. til at flytte den men hvordan flytter man den



Avatar billede lbhansen Nybegynder
08. oktober 2001 - 18:48 #1
for at skifte baggrundsfarve skal du lave
g.setColor(Color.black);
g.fillRect(0,0,width,height);
For at flytte den, skal du bruge gentegne baggrunden,
og gentegne forgrunden
Hvis du arbejder med awt. så er der denne gamle tutorial fra sun
http://java.sun.com/docs/books/tutorial/download/tut-OLDui.zip

der bl.a. fortæller dig hvordan man bruger doublebuffering til at få lavet glattere animation
Avatar billede fireworld Nybegynder
08. oktober 2001 - 18:57 #2
ja men hvis jeg nu vil flytte den via min muse sjovere


import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class test extends Applet implements MouseListener
{
    Label status = new Label(\"Klik med musen\");


public void init()
    {
    this.addMouseListener(this);
    this.add(status,null);
    }


public void mousePressed(MouseEvent e)
    {
    blah(e);
    }
public void mouseReleased(MouseEvent ev) {}
public void mouseClicked(MouseEvent ev) {}
public void mouseEntered(MouseEvent ev) {}
public void mouseExited(MouseEvent ev) {}

public void blah(MouseEvent e)
    {
    Point m_down = e.getPoint();
    status.setText(\"X : \"+m_down.x+\" Y: \"+m_down.y+\"\");
    g.fillRect(40,40,10,10);
    repaint();

    }


public void paint(Graphics g)
    {
    g.setColor(Color.green);
    g.drawRect(40,40,20,20);

    }




}

har prøvet sådan her men den må da skulle defineres i root\'en
Avatar billede lbhansen Nybegynder
08. oktober 2001 - 19:02 #3
Hvis du ikke skal overskrive din label, så vil jeg ihvertfald anbefale at du implementerer din paint() i en nedarvning af java.awt.Canvas, og placerer den i din applet

du kan i din nedarvede klasse sætte nogle parametre(x,y), hvor den skal tegne. Når du så modtager et mousedown event, så kan du sætte de parametre, og kalde repaint() på dit canvas.

I din paint metode skal du:
g.setColor(baggrundsfarve);
g.setFillRect(0,0,width,height);
g.setColor(forgrundsvarve);
g.drawRect(x,y,width,height);
Avatar billede fireworld Nybegynder
08. oktober 2001 - 19:05 #4
ehhh det siger mig ikke meget :)

kan jeg ikke få et lille eksempel ...
Avatar billede lbhansen Nybegynder
08. oktober 2001 - 19:29 #5
her er et hurtigt eksempel. Godt nok implementeret i en frame, jeg havde ikke rigtigt andet fornuftigt at tage mig til:)

import java.awt.*;
import java.awt.event.*;

public class MovingRect extends Frame {
    private class Rect extends Canvas implements MouseListener {
        private int xPos, yPos;
        public Rect() {
            addMouseListener(this);
        }
        public void mouseEntered(MouseEvent e) {
        }
        public void mouseReleased(MouseEvent e) {
        }
        public void mouseClicked(MouseEvent e) {
            xPos = e.getX();
            yPos = e.getY();
            repaint();
        }
        public void mousePressed(MouseEvent e) {
        }
        public void mouseExited(MouseEvent e) {
        }
        public void paint(Graphics g) {
            Dimension d = getSize();
            g.setColor(Color.black);
            g.fillRect(0, 0, d.width, d.height);
            g.setColor(Color.white);
            g.fillRect(xPos, yPos, 40, 40);
        }

    }
    public MovingRect(String title) {
        super(title);
        setLayout(new BorderLayout());
        add(BorderLayout.NORTH, new Label(\"Klik i firkanten\"));
        Rect rect = new Rect();
        rect.setSize(300, 300);
        add(BorderLayout.CENTER, rect);
        setSize(300, 400);
        setVisible(true);

    }
    public static void main(String a[]) throws Exception {
        new MovingRect(\"Move\");
    }
}
Avatar billede fireworld Nybegynder
08. oktober 2001 - 20:32 #6
okaaaaAY ... det eksempel... det er alt for kompliceret til mig hehe ...

men jeg må igang med at læse noget mere kan jeg se hehe... tak for hjælpen endnu engang.. det er nu dig som for det meste svare på mine n00b spørgsmål ... og det er jo DEJLIGT
Avatar billede lbhansen Nybegynder
08. oktober 2001 - 20:40 #7
der er nu ikke så meget trylleri i det.

jeg bruger en privat klasse(Rect), som selv kan finde ud af lytte på hvornår der bliver trykket med musen, og så tegne derefter.

MovingRect er en frame, hvori der er en label, og så det canvas, som der bliver tegnet på.

På den måde undgår man at der bliver tegnet over den label man har.
Avatar billede fireworld Nybegynder
08. oktober 2001 - 20:48 #8
ja men nå jeg får et script vil jeg gerne forstå det i hvert fald 90% ... og jeg er slet ikke nået til

FRAMES endnu... og Throws er jeg kun lige begyndt på og det sammen med implements
Avatar billede lbhansen Nybegynder
08. oktober 2001 - 20:51 #9
så en lille side kommentar det har intet med script at gøre:)

en Frame er stort set det sammen som en Applet. Du kan tilføje paneler og andre komponenter på dem.
En Frame bliver bare aktiveret på maskinen fra en konsol, hvorimod en Applet kører i browseren.

Men god fornøjelse med læsningen:)
Avatar billede fireworld Nybegynder
08. oktober 2001 - 20:59 #10
hehe tak ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester