tworzenie instancji klasy publicznej w innej klasie publicznej

0

Mam pakiet Wiosna, a w nim dwie klasy publiczne. W pierwszej klasie do zmiennej "kolor" przypisałam wartość, którą chcę wykorzystać w drugiej klasie publicznej, która z kolei rozszerza klasę Applet. Nie wiem jak to zrobić, wymyśliłam taki twór w klasie drugiej, który zgłasza błąd Wiosna cannot be resolved to a type:

public class Kwadraty extends Applet {
   
    Random losowanie = new Random();
    String str = " ";
    int x, y, w,h;
    int n;
    Wiosna spring; **//BŁĄD: Wiosna cannot be resolved to a type**
    int losowanieKwadratow() {
        return losowanie.nextInt(10);
    }
    int losowaniedl(){
    	return losowanie.nextInt(22);
    }
    int losowaniewys(){
    	return losowanie.nextInt(22);
    }
    int losowaniewspx(){
    	return losowanie.nextInt(200);
    }
    //
    int losowaniewspy(){
    	
    	return	 y = losowanie.nextInt(200);
    		
    }
    
    @Override
    public void init() {
       
        n = losowanieKwadratow();
        str += toString().valueOf(n);
        w = losowaniedl();
        h = losowaniewys();
        x = losowaniewspx();
        repaint();
    }
 
    @Override
    public void paint(Graphics g) {
    	spring = new Wiosna();
    	g.setColor(spring.kolor);	
    	//g.setColor(Color.orange);
        g.fillRect(x, y, w, h);
        g.drawString(str, 40, 80);
    }
}

Proszę o podpowiedź jak to zrobić...

0

zapomniałam dodać: Klasa pierwsza nazywa się Wiosna, i jest publiczna.

0

A teraz napisz po polsku co tu jest klasą a co pakietem, bo póki co widzę tam tylko bełkot i bezużyteczny kod. Ogólnie rzecz ujmując musisz obiekt jednej z klas przekazać do drugiej klasy.

Edit: skoro tak to moze po prostu musisz tą klasę zaimportować? o_O Zacznij pisać w jakimś normalnym IDE jak Eclipse, a nie w notatniku to takie nieistotne sprawy będą się działy same.

0

Sprostowanie: Klasa pierwsza nazywa się "Wiosna", klasa druga "Kwadraty", pakiet zawierający obie klasy nazywa się "wiosna". Po uwagach Shaloma zaimportowałam klasę Wiosna i wykorzystałam w Kwadraty obiekt s, który utworzyłam w klasie Wiosna. Import nie działa: the import cannot be wiosna.Wiosna can not be resolved, ponadto: s CANNOT BE RESOLVED TO A VARIABLE.

Klasa Kwadraty:

import wiosna.Wiosna;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Random;

import javax.swing.JApplet;
import javax.swing.JFrame;
//import javax.swing.JPanel;

public class Kwadraty extends Applet {
   
    Random losowanie = new Random();
    String str = " ";
    int x, y, w,h;
    int n;
    //Wiosna spring; //BŁĄD: Wiosna cannot be resolved to a type
    int losowanieKwadratow() {
        return losowanie.nextInt(10);
    }
    int losowaniedl(){
    	return losowanie.nextInt(22);
    }
    int losowaniewys(){
    	return losowanie.nextInt(22);
    }
    int losowaniewspx(){
    	return losowanie.nextInt(200);
    }
    //
    int losowaniewspy(){
    	
    	return	 y = losowanie.nextInt(200);
    		
    }
    
    @Override
    public void init() {
        losowanieKwadratow();
        n = losowanieKwadratow();
        str += toString().valueOf(n);
        w = losowaniedl();
        h = losowaniewys();
        x = losowaniewspx();
        repaint();
    }
 
    @Override
    public void paint(Graphics g) {
    	//spring = new Wiosna();
    	g.setColor(s.kolor); //**s CANNOT BE RESOLVED TO A VARIABLE**	
    	//g.setColor(Color.orange);
        g.fillRect(x, y, w, h);
        g.drawString(str, 40, 80);
    }
}

klasa Wiosna:

public class Wiosna {
int tab1[] = new int[4] ;
int x, r, g, b ;
public Color kolor;
Wiosna(){
	r=1;
	g=20;
	b=54;
}
void losowanie(){
	
	Random los = new Random();
	x = los.nextInt(3);
		for (int i=0; i<=x; i++)
		{r = los.nextInt(256);
		g= los.nextInt(256);
		b=los.nextInt(256);
		kolor = new Color(r, g, b);
			System.out.println("kolor: "+kolor);}
System.out.println(""+x);
	//return x;
}
public static void main (String[] args){
	Wiosna s = new Wiosna();
	s.losowanie();         
	System.out.println("x:"+s.x);
}
}
0

No chyba jednak piszesz to za pomocą lodówki bo widzisz moj eclipse bez żadnych problemów sobie z tym poradził...

//Wiosna.java:
package wiosna;

import java.awt.Color;
import java.util.Random;

public class Wiosna {
    int tab1[] = new int[4];
    int x, r, g, b;
    public Color kolor;

    Wiosna() {
        r = 1;
        g = 20;
        b = 54;
    }

    void losowanie() {
        Random los = new Random();
        x = los.nextInt(3);
        for (int i = 0; i <= x; i++) {
            r = los.nextInt(256);
            g = los.nextInt(256);
            b = los.nextInt(256);
            kolor = new Color(r, g, b);
            System.out.println("kolor: " + kolor);
        }
        System.out.println("" + x);
    }

    public static void main(String[] args) {
        Wiosna s = new Wiosna();
        s.losowanie();
        System.out.println("x:" + s.x);
    }
}
//Kwadraty.java
package wiosna;

import java.applet.Applet;
import java.awt.Graphics;
import java.util.Random;

public class Kwadraty extends Applet {
    private static final long serialVersionUID = 1L;
    Random losowanie = new Random();
    String str = " ";
    int x, y, w, h;
    int n;

    private final Wiosna spring = new Wiosna();

    int losowanieKwadratow() {
        return losowanie.nextInt(10);
    }

    int losowaniedl() {
        return losowanie.nextInt(22);
    }

    int losowaniewys() {
        return losowanie.nextInt(22);
    }

    int losowaniewspx() {
        return losowanie.nextInt(200);
    }

    int losowaniewspy() {
        return y = losowanie.nextInt(200);
    }

    @Override
    public void init() {
        losowanieKwadratow();
        n = losowanieKwadratow();
        str += n;
        w = losowaniedl();
        h = losowaniewys();
        x = losowaniewspx();
        repaint();
    }

    @Override
    public void paint(Graphics g) {
        g.setColor(spring.kolor);
        g.fillRect(x, y, w, h);
        g.drawString(str, 40, 80);
    }
}

Skoro klasy leżą w tym samym pakiecie to nie trzeba tu nawet nic importować.
No i nie do końca rozumiem czego sie chcesz nauczyć pisząc takie potworki jak to co tu prezentujesz. Chyba tylko złych nawyków.

0

Shalom, tak jak chciałeś, w załączeniu zrzuty ekranu, widać strukturę programu, pakiety itd. Kiedyś te klasy (Wiosna i Kwadraty) były w różnych pakietach, ale przez refaktoryzację zrobiłam wspólny pakiet i nie próbowałam tak, jak pisałeś: New Project itd., ale to chyba nie ma znaczenia.

0

Czy ty jesteś normalna? Zrobiłaś DWA OSOBNE PROJEKTY! Nie dziwota że nie widzą klas między sobą. Naucz się czytać, bo wyraźnie napisałem żebyś obie klasy zrobiła W TYM SAMYM PROJEKCIE. A jeśli bardzo chcesz podzielic sobie to na 2 projekty to kliknij na ten projekt kwadraty prawym, daj build path -> configure build path i w zakładce project references dodaj referencje do projektu wiosna.

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