Java probleem

Status
Niet open voor verdere reacties.

maarten54321

Gebruiker
Lid geworden
7 nov 2010
Berichten
121
Hallo iedereen

Ik was bezig in Java een toepassing te maken die een primitieve lift voorstelt die telkens met 20 pixels omhoog en omlaag beweegt. Nu dacht ik dat mijn probleem verband hield met instantie variabelen. Ik ben daar niet zeker van omdat u al kan zien dat ik heb geprobeerd alles in instantie variabelen te gieten. Voor wie niet weet wat instantie variabelen zijn: instantie variabelen zijn variabelen met "private" ervoor; variabelen die niet na een methode "afgebroken" worden.

Hier zie je mijn script (code):

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; 

public class Max extends JFrame implements ActionListener {

    private JSlider slider;
    private JPanel panel;
    private JButton buttonOne, buttonTwo;
    private int liftValue = 0;
    private int waardePri;
    private int bedragPri = 20;

    public static void main(String[] args) {
        Max demo = new Max();
        demo.setSize(200,300);
        demo.createGUI();
        demo.show();
    }

    private void createGUI() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container window = getContentPane();
        window.setLayout(new FlowLayout());
        
        
        
        panel = new JPanel();
        panel.setPreferredSize(new Dimension(300, 200));
        panel.setBackground(Color.white);
        window.add(panel);
        
        buttonOne = new JButton("Up");
        window.add(buttonOne);
        buttonOne.addActionListener(this);
        
    }

    public void actionPerformed(ActionEvent event) {
        
        int Waarde = waardePri;
        int bedrag = bedragPri;
        Object source = event.getSource();
        if (source == buttonOne) {
                 
        Waarde = liftValue + 20;    
        
        }
        display();
    }

    private void display() {
        
        Graphics paper = panel.getGraphics();
        drawLogo(paper, 0, liftValue);
        
    }
   private void drawLogo(Graphics drawingArea, int xPos, int yPos) {
       
        drawingArea.drawRect(xPos, yPos, 60, 60);
     
        }
    }
 
Laatst bewerkt door een moderator:
Ondertussen al deels opgelost door:

liftValue = liftValue + 20;

en dan die andere variabelen weg
 
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; 

public class Max extends JFrame implements ActionListener {

    private JSlider slider;
    private JPanel panel;
    private JButton buttonOne, buttonTwo;
    private int liftValue = 0;
    private int waardePri;
    private int bedragPri = 20;

    public static void main(String[] args) {
        Max demo = new Max();
        demo.setSize(200,300);
        demo.createGUI();
        demo.show();
    }

    private void createGUI() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container window = getContentPane();
        window.setLayout(new FlowLayout());
        
        
        
        panel = new JPanel();
        panel.setPreferredSize(new Dimension(300, 200));
        panel.setBackground(Color.white);
        window.add(panel);
        
        buttonOne = new JButton("Up");
        window.add(buttonOne);
        buttonOne.addActionListener(this);
        
    }

    public void actionPerformed(ActionEvent event) {
        
        Object source = event.getSource();
        if (source == buttonOne) {
                 
        liftValue =liftValue + 20;    
        
        }
        display();
    }

    private void display() {
        
        Graphics paper = panel.getGraphics();
        drawLogo(paper, 0, liftValue);
        
    }
   private void drawLogo(Graphics drawingArea, int xPos, int yPos) {
       
        drawingArea.drawRect(xPos, yPos, 60, 60);
     
        }
    }
 
Laatst bewerkt door een moderator:
snelle oplossing: je update de panel niet:

[cpp]
private void display() {

Graphics paper = panel.getGraphics();
panel.update(paper);
drawLogo(paper, 0, liftValue);

}

[/cpp]

zelf zou ik overigens een classe apart maken voor de panel. dan kan je namelijk het drawevent overriden en heb je er meer controle over

verder is het assenstelsel in java als volgt: links boven = 0,0 als je de lift dus naar boven wilt laten gaan (lift staat bijv. op 50,50) dan moet je -y doen ipv +y
 
Zéér hard bedankt ;)
Ik ben namelijk bezig met het boek Java voor studenten: 539 pagina's en aan pagina 160 vragen ze al om een rekenmachine en een spel te maken, ook een lift :D
Nu nog de lay-out aanpassen van de lift: zoals een deur die opengaat enzo :D

Bedankt :D
 
Ik heb echter nog een probleem: test maar dan zal je zien welk.
Mijn script:
En alvast bedankt :D


Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; 

public class Max extends JFrame implements ActionListener {

    private JSlider slider;
    private JPanel panel;
    private JButton buttonOne, buttonTwo;
    private int liftValue = 120;
    private JLabel label;

    public static void main(String[] args) {
        Max demo = new Max();
        demo.setSize(230,280);
        demo.createGUI();
        demo.show();
    }

    private void createGUI() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        Container window = getContentPane();
        window.setLayout(new FlowLayout());
        
        
        
        panel = new JPanel();
        panel.setPreferredSize(new Dimension(60, 180));
        panel.setBackground(Color.white);
        window.add(panel);
        
        label = new JLabel("Druk op down om te beginnen");
        window.add(label);
        
        buttonOne = new JButton("Down");
        window.add(buttonOne);
        buttonOne.addActionListener(this);
        
        buttonTwo = new JButton("Up");
        window.add(buttonTwo);
        buttonTwo.addActionListener(this);
        
    }

    public void actionPerformed(ActionEvent event) {
        
        Object source = event.getSource();
        if (source == buttonOne) {
                 
        liftValue =liftValue + 20;    
        
        }
        
        if (source == buttonTwo) {
                 
        liftValue = liftValue - 20; 
        
        }
        display();
    }

    private void display() {
        
        Graphics paper = panel.getGraphics();
        
        panel.update(paper);
        
        drawLogo(paper, 0, liftValue);
        
    }
   private void drawLogo(Graphics drawingArea, int xPos, int yPos) {
       
        drawingArea.setColor(Color.blue);
        drawingArea.fillRect(xPos, yPos, 60, 40);
        drawingArea.drawRect(xPos, yPos, 60, 40);
     
        }
    }
 
Laatst bewerkt door een moderator:
Maarten, bij deze het verzoek om code-tags [ code ] te gebruiken; die maken één en ander wat leesbaarder :) thanks!
 
ik weet wat die bedoelde maar ik reageerde op jou vraag :P

hierop:

Ik heb echter nog een probleem: test maar dan zal je zien welk.
Mijn script:
 
Oké ;), ja de lift wordt alleen geplaatst als je op een knop drukt, in mijn geval op down maar niet op voorhand.
 
dat klopt dan moet je nog even de methode display aanroepen vanuit je initGui methode
 
Oké, maar hoe doe ik dat?
Ik en nu bezig met het feit dat je naar beneden en naar boven kan gaan en dat je niet oneindig naar boven en beneden kan gaan. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan