zmiana koloru tla i wyswietlanie image

0

Zrobilem program wszystko ladnie dziala netbeans nie wyswietla zadnego bledu ale nie dziala zmiana koloru tla na 2 przyciskach w przycisku tlo i w przycisku image 2 przyciski nie wyswietlaja Image.Niewiem juz cos z tym zrobic niby wszystko dobrze.HElp

[code]package zad1;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class zad1 extends JPanel {

	public  JFrame ramka = new JFrame();
	public  JPanel panelo = new JPanel();

			JButton t1 = new JButton("Wroc");
			JButton t2 = new JButton("Red2");
			JButton t3 = new JButton("Blue3");
			JButton wroc1 = new JButton("Wroc");
			JButton p1 = new JButton("Rys 1");
			JButton p2 = new JButton("Rys 2");
			JButton zakoncz = new JButton("Zakoncz");
			JButton i = new JButton("Image");
			JButton t = new JButton("Tlo");
			JButton wyjscie = new JButton("Wyjscie");
			Image rys1,rys2,rys;

	public  void panelo()
	{
			panelo.setLayout(new BorderLayout());
			panelo.setBorder(BorderFactory.createEmptyBorder(10,110,10,10));

	}



	public  void menu()
	{
			panelo.removeAll();
			panelo();

			wroc1.setBounds(10,10,100,50);
			p1.setBounds(10,70,100,50);
			p2.setBounds(10,130,100,50);
			zakoncz.setBounds(10,250,100,50);

			rys1=Toolkit.getDefaultToolkit().getImage("C:\\p1.jpg");

			wroc1.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent event)
					{
							stronaGlowna();
					}});
			p1.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent event)
					{
		   Object o=event.getSource();
		   if (o==p1) {rys=rys1;}
		   else
		   if (o==p2) {rys=rys2;}
		   repaint();
					}});
			p2.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent event)
					{
							
					}});


			panelo.add(wroc1);
			panelo.add(p1);
			panelo.add(p2);
			ramka.add(panelo);



	}

   public void paint(Graphics g){
   super.paint(g);
   g.drawImage(rys,250,200,300,300 , this);
   }


	public  void Tlo()
	{
			panelo.removeAll();
			panelo();

			t1.setBounds(10,10,100,50);
			t2.setBounds(10,70,100,50);
			t3.setBounds(10,130,100,50);
			panelo.add(t1);
			panelo.add(t2);
			panelo.add(t3);

				t1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event)
				 {

					  stronaGlowna();
				   }});

				t2.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event)
				 {
					 Object source = event.getSource();
					 Color color = getBackground();
					 if (source == t2)
					 color = Color.yellow;
					 else if (source == t3)
					 color = Color.blue;


					  setBackground(color);
					  repaint();
				   }});
	}

	public  void wyjscie ()
	{
			System.exit(0);
	}



	public  void stronaGlowna()
	{
			panelo.removeAll();
			panelo();
			panelo();
			String text = "";
			JLabel label = new JLabel(text);
			label.setFont(new Font("",Font.ITALIC, 24));
			label.setForeground(new Color(50,255,0));

			i.setBounds(10,100,100,50);
			t.setBounds(10,160,100,50);
			wyjscie.setBounds(10,220,100,50);
			panelo.add(i);
			panelo.add(t);
			panelo.add(wyjscie);
			panelo.add(label,BorderLayout.CENTER);
			ramka.add(panelo);

		  i.addActionListener(new ActionListener() {
		  public void actionPerformed(ActionEvent event)
					{
							menu();
					}});
		   t.addActionListener(new ActionListener() {
		   public void actionPerformed(ActionEvent event)
							{

									Tlo();
							}});

		   wyjscie.addActionListener(new ActionListener() {
		   public void actionPerformed(ActionEvent event)
									{
											wyjscie();
									}});


	}

	public zad1()
	{
	menu();
	stronaGlowna();
	ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	ramka.setSize(800,500);
	ramka.setVisible(true);
	}

	public static  void main(String[] args)
	{
	 new zad1();


	}

}[/code]

0

Masz zad1 (JPanel) a w nim: ramka (JFrame) i panelo (JPanel). Do ramki dodajesz panelo, a wyświetlać obrazek i ustawiać kolor tła próbujesz w zad1 które nigdzie nie jest dodane. Jak to ma niby działać? Zrób z zad1 zwykłą klasę a nie JPanel, wtedy wyświetli Ci błędy. Napraw je i po sprawie.

0

to gdzie mam zad1 dodac?

0

nie da sie tak zrobic bez extends JPanel w clasie wywala bledy w repaint jakis kosmos normalnie

0

Da się wierz mi. To co zrobiłeś można porównać do samochodu (zad1) wiozącego drugi samochód (panelo). Ty siedzisz w tym drugim (panelo) i się dziwisz że jak skręcasz kierownicą to ten pierwszy (zad1) nie skręca.

Masz ustawiać tło, rysować obrazek, używać repaint dla panelo a nie zad1.

Zacznij od zmiany tego:

public  JPanel panelo = new JPanel();

na:

public  JPanel panelo = new JPanel() {
  public void paint(Graphics g) {
    //tu rysujesz
  }
};
0

no dobra dziala tlo jeszcze mam problem z obrazkiem :/

0

ok dzieki wielki SZacun dziala wszystko ;]

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