JFrame i Graphics2D

0

Witam, pisze edytor map do mojej gry, i mam pewien problem, mianowicie kiedy próbuje coś narysować za pomocą Graphics2D znika mi Gui zrobione JFrame, czy ktoś wie czym to jest spowodowane lub jak mozna to naprawic?

package pl.thejakubx.paperman.worldeditor;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Okno extends JFrame implements MouseListener, MouseMotionListener, ActionListener {
	JButton BXD, BExit;
	JLabel Px, Py, Pt, Pid1,Pid2;
	JTextField Tx, Ty;
	JComboBox CObiectId;
	  
    public Okno(){
        addMouseListener(this);
       // addMouseMotionListener(this);
    	setSize(960+150,640);
    	setTitle("Paperman WorldEditor");
    	setLayout(null);
    	setResizable(false);

    	
    	Pid1 = new JLabel("ID:");
    	Pid1.setBounds(958,10,100,10);
    	add(Pid1);
    	
    	Pid2 = new JLabel("176");
    	Pid2.setBounds(958+15,10,100,10);
    	add(Pid2);
    	
    	Px = new JLabel("X: ");
    	Px.setBounds(958,35,100,10);
    	add(Px);
    	
    	Py = new JLabel("Y: ");
    	Py.setBounds(958+55,35,100,10);
    	add(Py);
    	
    	
    	Tx = new JTextField("x");
    	Tx.setBounds(960+10,30,40,20);
    	add(Tx);
    	Tx.addActionListener(this);
    	
    	
    	Ty = new JTextField("y");
    	Ty.setBounds(960+10+55,30,40,20);
    	add(Ty);
    	Ty.addActionListener(this);
    	
    	
    	Pt = new JLabel("Type:");
    	Pt.setBounds(960,60,40,20);
    	add(Pt);
    	
    	CObiectId =new JComboBox();
    	CObiectId.setBounds(960+30, 60, 100, 20);
    	CObiectId.addItem("---");
    	CObiectId.addItem("Wall");
    	CObiectId.addItem("R_Wall");
    	CObiectId.addItem("L_Wall");
    	CObiectId.addItem("Roof");
    	CObiectId.addItem("Floor");
    	CObiectId.addItem("D_Spikes");
    	CObiectId.addItem("Saw");
    	CObiectId.addItem("Point");
    	CObiectId.addItem("Start");
    	CObiectId.addItem("Finish");
    	
    	CObiectId.addActionListener(this);
    	
    	add(CObiectId);

    }
    public void paint(Graphics g) {
      //  super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
 
        // prostokat
        g2d.drawRect(10, 10, 380, 380);
        // kolo
        g2d.drawOval(10, 10, 380, 380);
    }

    public static void main(String[] args){
    	Okno okno = new Okno();
    	okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	okno.setVisible(true);
    }
    
    
    
    
	@Override
	public void actionPerformed(ActionEvent e) {
		Object zrodlo  = e.getSource();
		if(zrodlo == CObiectId){
			System.out.print(CObiectId.getSelectedItem());
		}
	/*	if(zrodlo == BXD){
			LWypisz.setText(LWypisz.getText()+"XD");
		}
		if(zrodlo == BExit){
			dispose();
		}
		if(zrodlo == Ttekst){
			LWypisz.setText(Ttekst.getText());
		}*/
		
	}
	@Override
	public void mouseClicked(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}
	@Override
	public void mouseEntered(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}
	@Override
	public void mouseExited(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}
	@Override
	public void mouseMoved(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}
	@Override
	public void mousePressed(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}
	@Override
	public void mouseReleased(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}
	@Override
	public void mouseDragged(MouseEvent e) {
		Tx.setText(e.getX()+"");
		Ty.setText(e.getY()+"");
		
	}


    
    
 
}
0

Dodaj do okna (JFrame) panel (JPanel) w nim rysuj.

0

zapewne chodzi Ci o to

extends JPanel, JFrame

nie da się 2 rzeczy dziedziczyć.

0

Zapewne chodzi mi o to co napisałem, o dodanie panelu do okna.

JPanel panel = new MyPanel();
panel.setBounds(...);
add(panel);
...
class MyPanel extends JPanel
{
     public void paintComponent(Graphics g);
     {
          //rysowanie
     }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1