Vraag & Antwoord

Programmeren

[JAVA] Bewegend object

2 antwoorden
  • Goede middag! Ik ben vrij nieuw in het programmeren en ben bezig met een opdracht voor school. De opdracht is een applicatie maken waarin een bal heen en weer beweegt in het frame door middel van een Timer. De bal mag niet van het venster af en het paneel moet ook buttons beschikken dat de richting van de bal veranderd. Deze buttons moet je plaatsen d.m.v. een borderlayout. nu heb ik een script gemaakt, maar ik loop helaas vast. Frame: [code:1:38008814a8] package Oefening4_4; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Frame extends JFrame { public Frame() { JFrame venster = new JFrame(); venster.setSize(600,400); venster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); venster.setTitle("Oefening 4.4"); venster.setLocation(100,100); venster.setVisible(true); BalPaneel ballenPaneel = new BalPaneel(); add( ballenPaneel, BorderLayout.CENTER ); KnoppenPaneel Knoppen = new KnoppenPaneel( ballenPaneel ); add( Knoppen, BorderLayout.SOUTH ); } public static void main(String[] args) { new Frame(); } } [/code:1:38008814a8] BalPaneel: [code:1:38008814a8] package Oefening4_4; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class BalPaneel extends JPanel implements ActionListener { /** * Delay = delay for the timer * * veranderRichting = change direction * * verplaatsX = move horizontal */ public Bal Bal1; public final int Delay = 30; public BalPaneel() { Bal1 = new Bal(200, 100, Color.orange, 4); Timer autoKlik = new Timer(Delay, this); autoKlik.start(); } public void veranderRichting() { Bal1.veranderRichting(); } public void verplaatsX() { Bal1.verplaatsX(); } public void paintComponent( Graphics g ) { super.paintComponent( g ); Bal1.teken( g ); } public void actionPerformed( ActionEvent e ) { Bal1.verplaatsX(); repaint(); } }[/code:1:38008814a8] Knoppenpaneel: [code:1:38008814a8] package Oefening4_4; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * wissel = button to change from direction * @author Rick * */ public class KnoppenPaneel extends JPanel implements ActionListener { private JButton wissel; BalPaneel ballenPaneel; public KnoppenPaneel( BalPaneel ballenPaneel) { wissel = new JButton("Wissel van richting"); wissel.addActionListener(this); add(wissel); } public void actionPerformed(ActionEvent e) { if (e.getSource() == wissel) { ballenPaneel.veranderRichting(); } else { System.out.println("Dit is knoppenpaneel else"); } } }[/code:1:38008814a8] En als laatste.... de bal: [code:1:38008814a8] package Oefening4_4; import java.awt.Color; import java.awt.Graphics; public class Bal { int x = 200; int y = 200; int grootte = 150; private Color kleur; private int snelheid; public Bal(int x, int verPos, Color kleur, int snelheid) { this.x = x; this.y = verPos; this.grootte = grootte; this.kleur = kleur; this.snelheid = snelheid; } public void verplaatsX() { x += snelheid; if (x <= 0) { veranderRichting(); }else { x += snelheid; } } public void veranderRichting() { snelheid = - snelheid; if (x >= 600 - grootte) { verplaatsX(); }else { veranderRichting(); } } public void teken( Graphics g ) { g.setColor( Color.orange ); g.fillOval( x, y, grootte, grootte); g.setColor( Color.BLACK ); g.drawOval( x, y, grootte, grootte ); g.drawOval( x + grootte / 4, y, grootte / 2, grootte ); } }[/code:1:38008814a8] Het enige wat ik zie als ik deze app run is een frame en meer niet... Heeft iemand het idee wat er fout is? mvg, Rick
  • Misschien moet je i.p.v BorderLayout.Center en BorderLayout.SOUTH coordinaten opschrijven, en in welk programma maak je deze app? bijvoorbeeld MS visual basic 2010 (heb je scripts aan elkaar gekoppeld? bijv: KnoppenPannel Knoppen = Script i.p.v new KnoppenPaneel?). Ik gebruik eigenlijk altijd coordinaten (x,y,z. of in niet 3d apps, x en y). zodat ik zeker weet dat (in jouw geval) de bal en knoppenbalk niet buiten de kaders komen (weet script, als buiten kaders is = scrollbalk?). Ik ben zelf meer gefocust op OS en Games, dus ik weet niet zeker of deze suggesties juist zijn. ____________________________________________________________ BalPaneel ballenPaneel = new BalPaneel(); add( ballenPaneel, BorderLayout.CENTER ); KnoppenPaneel Knoppen = new KnoppenPaneel( ballenPaneel ); add( Knoppen, BorderLayout.SOUTH ); } public static void main(String[] args) { new Frame(); } } [/code] ______________________________________________________________ Grts, Noah :wink:

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.