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

Błąd w kodzie odpowiedzialny za wyświetlanie obiektu.


Rekomendowane odpowiedzi

Opublikowano

Witam otóż mam problem z kodem ,który nie wyświetla mi obiektu w ramce i nie umiem sobie z nim poradzić.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
 
import javax.swing.JPanel;
import javax.swing.Timer;
 
@SuppressWarnings("serial")
public class Obraz1 extends JPanel implements ActionListener, KeyListener{
 
Timer t=new Timer(5 ,this);
double x = 0, y=0 , velx = 0, vely = 0;
 
public Obraz1(){
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
 
}
public void paintCompoment(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.blue);
g2.fill(new Ellipse2D.Double(x,y,60,40));
}
public void actionPerformed(ActionEvent e){
repaint();
x += velx;
y += vely;
 
}
public void up(){
vely = -1.5;
velx = 0;
 
}
public void down(){
vely = -1.5;
velx = 0;
}
public void left(){
velx = -1.5;
vely = 0;
 
}
public void right(){
velx = 1.5;
vely = 0;
}
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP){
up();
 
}
if (code == KeyEvent.VK_DOWN){
down();
 
}
if (code == KeyEvent.VK_RIGHT){
right();
 
}
if (code == KeyEvent.VK_LEFT){
left();
 
}
}
public void keyTyped(KeyEvent e) {}
public void keyRelased(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
 
}
}
 
import javax.swing.JFrame;
 
 
public class Okno {
public static void main(String args[]){
JFrame f = new JFrame ();
Obraz1 o = new Obraz1();
f.add(o);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800, 600);
}
}
MikartPL.png

Opublikowano

Ok - mam. Nie overriduje Ci metody paintComponent, ponieważ nie dałeś modyfikatora protected.  Zawsze, kiedy chcesz jakąś metodę przysłonić, to dodawaj andotacje @Override, żebyś wiedział, kiedy znowu taki błachy błąd Ci się przytrafi. Kod:

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.blue);
g2.fill(new Ellipse2D.Double(x,y,60,40));
};

708121422388637873334.png

Opublikowano

Dzięki za odpowiedź tylko teraz mam problem bo piłka przesuwa się w nieskończoność, a ma reagować na strzałkę i przesuwać się dotąd aż jest naciśnięta. Wiesz może jak zrobić żeby było sterowanie na wsad

MikartPL.png

Opublikowano

Pytanie pierwsze:

Jest masa rozwiązań, ale najprościej zrobić jedną zmienną i ustawiać jej wartość w zależności od tego, który przycisk jest naciśnięty. Jeśli żaden - 0, Góra - 1 itd.

Potem, po sprawdzeniu inputa ruszasz nim w kierunku wyznaczanym przez zmienną. 

Pytanie drugie:

Zamiast VK_UP - VK_W, itd.

708121422388637873334.png

Opublikowano

Ostatnie pytanie mam dwa koła i tylko jedno się wyświetla. Czemu ?? Zrobiłem dwa koła w osobnych klasach i nie che mi to działać. Sorki ale jestem początkujący i staram się jak mogę ale w googlu ciężko o jakieś wytłumaczenie na ten temat.

MikartPL.png

Opublikowano

Kod wygląda tak ,zę podwoiłem obraz 1 i w okno dodałem 

 

import javax.swing.JFrame;
 
 
public class Okno {
public static void main(String args[]){
JFrame f = new JFrame ();
Obraz1 o1 = new Obraz1();
Obraz2 o2 = new Obraz2();
f.add(o1);
f.add(o2);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800, 600);
}
}
 
MikartPL.png

Opublikowano

dobra to tak 

OKNO 

 

import javax.swing.JFrame;
 
 
public class Okno {
public static void main(String args[]){
JFrame f = new JFrame ();
//Obraz1 o1 = new Obraz1();
Obraz2 o2 = new Obraz2();
//f.add(o1);
f.add(o2);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(800, 600);
}
}
 

Obraz1

 

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
 
import javax.swing.JPanel;
import javax.swing.Timer;
 
@SuppressWarnings("serial")
public class Obraz1 extends JPanel implements ActionListener, KeyListener{
 
Timer t=new Timer(5 ,this);
double x = 0, y=0 , velx = 0, vely = 0;
 
public Obraz1(){
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
 
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.blue);
g2.fill(new Ellipse2D.Double(x,y,40,40));
};
public void actionPerformed(ActionEvent e){
repaint();
x += velx;
y += vely;
 
}
public void up(){
vely = -1.5;
velx = 0;
 
}
public void down(){
vely = 1.5;
velx = 0;
}
public void left(){
velx = -1.5;
vely = 0;
 
}
public void right(){
velx = 1.5;
vely = 0;
}
public void keyPressed(KeyEvent e){
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP){
up();
 
}
if (code == KeyEvent.VK_DOWN){
down();
 
}
if (code == KeyEvent.VK_RIGHT){
right();
 
}
if (code == KeyEvent.VK_LEFT){
left();
 
}
}
public void keyTyped(KeyEvent e) {}
public void keyRelased(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
 
}
}
 

Obraz2

 

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;
 
import javax.swing.JPanel;
import javax.swing.Timer;
 
@SuppressWarnings("serial")
public class Obraz2 extends JPanel implements ActionListener, KeyListener{
 
Timer t=new Timer(5 ,this);
double x = 0, y=0 , velx = 0, vely = 0;
 
public Obraz2(){
t.start();
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(false);
 
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(Color.red);
g2.fill(new Ellipse2D.Double(x,y,40,40));
};
// public void actionPerformed(ActionEvent e){
// repaint();
// x += velx;
// y += vely;
// 
// }
// public void up(){
// vely = -1.5;
// velx = 0;
// 
// }
// public void down(){
// vely = 1.5;
// velx = 0;
// }
// public void left(){
// velx = -1.5;
// vely = 0;
// 
// }
// public void right(){
// velx = 1.5;
// vely = 0;
// }
public void keyPressed(KeyEvent e){
switch (e.getKeyCode()) {
        //if the right arrow in keyboard is pressed...
        case KeyEvent.VK_RIGHT: {
            velx+=3;
        }
        break;
        //if the left arrow in keyboard is pressed...
        case KeyEvent.VK_LEFT: {
            velx-=3;
        }
        break;
        //if the down arrow in keyboard is pressed...
        case KeyEvent.VK_DOWN: {
            vely+=3;
        }
        break;
        //if the up arrow in keyboard is pressed...
        case KeyEvent.VK_UP: {
            vely-=3;
        }
        break;
    }
}
public void keyTyped(KeyEvent e) {}
public void keyRelased(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
 
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
 
}
}
 

 

W między czasie znalazłem coś co pomoże mi zatrzymać kropkę i jest w Obraz2

MikartPL.png

Opublikowano

Pierwszy i drugi JPanel nakładają się na siebię, przez to jednego nie widać. Tego wgl. nie powinno się tak robić. Zrób osobno klasę Circle i tam walnij metodę draw, gdzie je narysujesz. I rysuj je na jednym JPanelu. I na co tam timer?

708121422388637873334.png

Opublikowano

Proszę cię pomóż mi . W tych sprawach jestem totalnym laikiem ,a musze zrobic to na zadanie. Nie zabardzo weim co chcesz mi powiedzieć. Ja uczę się tego akurat na przykładach. Próbuję zrobić dwa obrazki na sterowanie za pomocą strzałek i wasd.

MikartPL.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...