Array weitergeben

Hallo!

Ich habe ein kleines Programm geschrieben, habe aber ein kleines Problem, dass bestimmt leicht zu lösen ist.
Aber ich komme einfach nicht drauf, wie ich es lösen kann. Ich hab mir schon viele sachen dazu druchgelesen
und gesucht.. aber ich finde nicht das richtige.

Und zwar ist mein Problem, dass ich eine Klasse (class main) habe und noch eine Klasse (ausgabe) und noch
eine Klasse (zeichne). Nun hab ich in der Klasse main einen Array deklariet, und würde ihn gern ganz in der Klasse
ausgabe verwenden können. Aber wie mache ich das?
Mein Hauptproblem ist, dass die Klasse ausgabe schon von der Klasse zeichne erbt. Also klappt das mit dem
"extends" nicht mehr.

mfg. Legolas
Wäre nett, wenn ihr mir helfen könnt.
 
Machs halt per übergabewert.
Beispiel:
Code:
public class Main {
	public static void main(String[] args) {
		String ZurAusgabe[] = new String[2];
		ZurAusgabe[0] = "deine";
		ZurAusgabe[1] = "Ausgabe";
		Ausgabe aus = new Ausgabe();
		aus.ausgeben(ZurAusgabe);

	}

}
Ausgabe:
Code:
public class Ausgabe {
	public void ausgeben(String[] ZurAusgabe){
		for (int i = 0; i < ZurAusgabe.length; i++) {
			System.out.println(ZurAusgabe[i]);
		}
	}

}
 
Müssen die Zahlen z.B. x[3] unbedingt in nem Static angegeben werden?
Bei mir ist das nämlich nicht so und dann kommt die Felermeldung.. als in der Klasse ausgabe:
x is not public in java.awt.Compunent; cannot be accessed from outside package
 
Am besten du postest mal die stelle wo der Fehler Auftritt.
Ich kann den Fehler so nicht nachstellen.
falls du die Ausgabe in nem anderen Package hast musst du des natürlich importieren da wo du des verwendest.
 
Code:
import java.io.*;
import java.awt.Graphics;
import javax.swing.*;

public class Draw extends JPanel{
    int v = x[1];                 //<------ an der Stelle hängts
@Override                                   
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawLine(10,10,100,100);
    }
}

und im anderen code steht so was wie:
Code:
public class wanderer{
    public int[] x;
    wanderer(int n){
         x=new int [10];
        x[1] = 4;
   }
}
natürlich wesentlich umfangreicher wie die Stelle jetzt gefüllt wird und von was es abhängt...
 
Also du hast du rufst des ausserhalb von ner Funktion auf.
Code:
import java.io.*;
import java.awt.Graphics;
import javax.swing.*;

public class Draw extends JPanel{
    int v = x[1];                 //<------ an der Stelle hängts des kann nicht funktionieren des steht im Niemandsland
@Override                                   
    protected void paintComponent(Graphics g)
    {
        int v = x[1];                 //<------ an der Stelle hängts
        super.paintComponent(g);
        g.drawLine(10,10,100,100);
    }
}
 
Moin,

ich denke mal (ausgehend von den geposteten Codeschnipseln), dass Deine Klasse "Draw" natürlich nicht weiß, was "x[1]" sein soll.

Du solltest zuvor zumindest den Konstruktor von "wanderer" einmal aufgerufen haben und dann so zuweisen:
Java:
// leicht verändert, um auch wirklich Werte zu übergeben !!
public class wanderer
{
    public int[] x;
    
    wanderer( int n )
    {
        x = new int [10];  // warum 10 Elemente  ?
        x[1] = n;               // den übergebenen Wert zuweisen
    }
}

// -----

import java.io.*;
import java.awt.Graphics;
import javax.swing.*;

public class Draw extends JPanel
{
    int v = 0;

@Override     
    protected void paintComponent(Graphics g)
    {
    int iTmp = 4;
        wanderer myWanderer = new wanderer( iTmp );    
    v = myWanderer.x[1]

        super.paintComponent(g);
        g.drawLine(10,10,100,100);
    }
}

Ist aber ungetestet !

Gruß
Klaus
 
Zurück