Variable von einer Klasse in eine andere Übergeben?

4 Antworten

Eigentlich macht man sowas nicht in der main Methode. Und eine weitere Main-Methode in deiner Klasse3 macht eigentlich auch keinen Sinn..

Das was du aktuell wohl machen willst, geht ohne große Codeänderung bei dir einfach so:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class HauptFenster {


public static void main(String[] args) {

Fenster fenster = new Fenster();
Rechteck panel = new Rechteck();

fenster.add(panel);

while(true){

int high = (int)(Math.random()*200);
int width = (int)(Math.random()*150);
panel.zufall = high;
}
}
}

Auch wenn es nur ein Beispiel sein mag, solltest du von beginn an versuchen, deine Klassen Strukturiert zu halten und dir eine gewisse Sauberkeit anzugewöhnen. - Das sag ich nicht um dich zu ärgern, eher viel mehr, deshalb weil es dein Code ist, und du darauf dein Wissen aufbaust. 

Sprich: hast du Instanz-Variablen schreibe dafür eine getter und setter Methode.

Konkret bei dir in Klasse3:

getZufallszahl();
setZufallszahl(int zahl);

Vermeide viel Code in der main Methode, denn diese soll eigentlich nur dazu dienen deine Anwendung auszuführen.

Die Variablen in der main-Methode habe ich erstellt:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class HauptFenster {

public static int high;
public static int width;

public static void main(String[] args) {

Fenster fenster = new Fenster();
Rechteck panel = new Rechteck();

fenster.add(panel);

while(true){

high = (int)(Math.random()*200);
width = (int)(Math.random()*150);

}
}
}

Nun weiß ich aber nicht wie ich das mit "Main. ..." in die dritte Klasse schreiben muss.

In der dritten Klasse sollten die Werte high und width von der ersten Klasse an x und y in der dritten Klasse übergeben werden.

Klasse:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class Rechteck extends JPanel {

int x;
int y;

public Rechteck(){

this.setSize(500, 500);
}

public void paint (Graphics g){

g.fillRect(x, y, 100, 130);

}
}

du musst in der Main klasse ne statische globale variable erstellen...
also public static int random;
und dann eben random den wert der zahl übergeben...
in der 3. Klasse greifst du mit Main.random darauf zu.
wenn du was ni weißt frag nochmal hab grad nicht so viel zeit :)

24

globale variablen für so etwas zu verwenden ist eine sehr schlechte idee. gewöhn dir das gar nicht erst an :P

0
30

Kann man so machen, wenn man in der prozeduralen Programmierung hängen geblieben ist. Wenn man aber schon eine objektorientierte Sprache nutzt, dann sollte man darauf verzichten und die Parameter von Methoden oder Eigenschaften nutzen.

0

Wie füge ich hier ein JScrollPane ein?

Hallo,

Kann mir jemand sagen wie ich beim JPanel ein JScrollPane einfüge.

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
public class button extends JFrame{



public static void main(String[] args) {
    button frame = new button();
    frame.setVisible(true);
    frame.setSize(500,600);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);


}

public button(){
    super();

    getContentPane().setLayout(null);
    



    JPanel panel = new JPanel();
    panel.setBounds(10,30,100,101);
    add(panel);
    
    int j = 0;

    for (int i =0;i  grösserzeichen 200 ;i++ ) {
        
    
        JLabel label = new JLabel();
        label.setText(String.valueOf(i));
        
        label.setBounds(10,j,40,10);
        panel.add(label);   
        j = j +20;
    }
}
}

Danke

...zur Frage

JAVA Sonnensystem Applet - kann mir jemand helfen?

Hallo ich soll in der Schule ein Java Applet projekt über das Sonnensystem erstellen.

Das Applet zeigt die Sonne im mittelpunkt und unsere Planeten die durch OOP erzeugt werden. Sie sollen sich um die Sonne Drehen.

Das Applet soll automatisch starten

ich habe schon etwas angefangen weis aber nicht wie ich die kreisbewegung hinbekomme das es automatisch startet.

Source code import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

public class AppletPlanet extends Applet implements ActionListener { public Funktion Merkur; public Funktion Venus; public Funktion Erde; public Funktion Mars; public Funktion Jupiter; public Funktion Saturn; public Funktion Uranus; public Funktion Neptun;

public void init()
{   
    setSize (1350,690);                         //Gröse des Applets
    setBackground (Color.white);                //Hintergrundfarbe

//100% =Sonne gröstes objekt im Sonnensystem Mitte
//Da nur int als fillOval fubktioniert werden die durchmeser gerundet und mal 4 genommen

Merkur  = new Funktion  (4,553,343);    //int initDurchmesser, int initXPos, int initYPos
Venus   = new Funktion  (4,533,343);    //int initDurchmesser, int initXPos, int initYPos
Erde    = new Funktion  (4,513,343);    //int initDurchmesser, int initXPos, int initYPos
Mars    = new Funktion  (4,493,343);    //int initDurchmesser, int initXPos, int initYPos
Jupiter = new Funktion  (36,433,343);
Saturn  = new Funktion  (25,403,343);
Uranus  = new Funktion  (10,383,343);
Neptun  = new Funktion  (10,363,343);
}

    public void actionPerformed (ActionEvent event)
    {

         Merkur.bewegen();
         Venus.bewegen();
         Erde.bewegen();
         Mars.bewegen();
         Jupiter.bewegen();
         Saturn.bewegen();
         Uranus.bewegen();
         Venus.bewegen();
         repaint();

}

public void paint (Graphics g)
{       

    Merkur.zeichnen(g);
    Venus.zeichnen(g);
    Erde.zeichnen(g);
    Mars.zeichnen(g);
    Jupiter.zeichnen(g);
    Saturn.zeichnen(g);
    Uranus.zeichnen(g);
    Neptun.zeichnen(g);

}           

}

import java.awt.Color; import java.awt.Graphics;

public class Funktion extends Object { public int Durchmesser; //Durchmesser der Planeten
public int xPos,yPos; //Position oben links des Planeten public int radius; public int mitteX,mitteY; public double grad;

public Funktion(int initDurchmesser, int initXPos, int initYPos)        //Konstruktor
{
    Durchmesser=initDurchmesser;
    xPos=initXPos;
    yPos=initYPos;
    radius=Durchmesser/2;
    mitteX = xPos+radius;                   //Mittelpunk der Planeten   X coordinate
    mitteY = yPos-radius;                   //                      Y coordinate

}
public  void bewegen()
{   }

public void zeichnen(Graphics g) {
g.setColor(Color.yellow); g.fillOval(575, 245, 200, 200); //Die Sonne der mittelpunkt

    g.setColor(Color.black);
    g.fillOval(mitteX, mitteY, Durchmesser, Durchmesser);                   
}

}

...zur Frage

Erneut Abfragen?

Hallo ich möchte eine art künstliche Inteligenz machen.

Ich möchte dazu eine Weitere Abfrage nach der Antwort machen.

Code:

package de.liokerhd.main;

import java.util.Scanner;

public class main {

public static void main (String[] args) {

int a = 10;

int b = 0;

String Eingabe;

while(a > b) {

Scanner sc = new Scanner(System.in);

Eingabe = sc.next();

if("Hallo".equalsIgnoreCase(Eingabe)) {

System.out.println("Hallo");

}else if ("Gute Nacht".equalsIgnoreCase(Eingabe)){

System.out.println("Gute Nacht");

}

}

}

}

...zur Frage

Zufallszahlen mit Math.random() - java

Ich habe ein Problem mit der Methode Math.random() die Zufallszalhen erzeugen soll.

Wenn ich: (int)(Math.random()*20+1); schreibe bekomme ich als Ergebnis zahlen zwischen 1 und 20.

Wenn ich jedoch: (int)(Math.random()*68+18); schreibe bekomme ich als Ergebnis zahlen bis 84.

Ich möchte jedoch Zahlen zwischen 18 und 68 Erzeugen. Wie kann ich das anstellen? Zudem würde ich gerne die Logik hinter Math.random() verstehen. Hoffe ihr könnt mir weiterhelfen.

...zur Frage

Wie nicht statische Klassen-Variable in main-Methode nutzen (Java)?

public class Scrabble {

  private ArrayList<String> words = new ArrayList<>();;
  
  public static void main(String[] args) {
    new Scrabble("Hallo", "I", "bims", "xyz", "aaaaaaaaaaa");
    String winnerWord = findBestWord(words);
    System.out.println(winnerWord);
  }

  public Scrabble(String... givenWords ) {
    this.words.clear();
    for(String word : givenWords) {
    this.words.add(word);
  }
}

Bei dem dickgedruckten bekomme ich den Fehler, dass es nicht funktioniert, da die Methode findBestWord() nicht statisch ist. Warum das ein Problem ist, ist mir klar. Aber wie kann ich den Fehler umgehen OHNE jede Methode statisch zu machen und ohne eine neue Klasse für die main-methode anzulegen ? Die ArrayList words muss nicht statisch sein.. aber dann kann ich sie nicht in der main nutzen.

Stehe irgendwie auf dem Schlauch.. jemand ne Idee ?

...zur Frage

Minecraft [1.7.10] Forge Programming - Vanilla Texture überschreiben?

Ich habe seit längerem vor, einen Glassblock zu erstellen, wie der beispielsweise von der Mod "Ztones" existiert. Dabei hatte ich ein Problem dass in meiner anderen Frage bereits erklärt wurde. https://www.gutefrage.net/frage/minecraft-forge-modding-1710---transparenter-block?foundIn=notification-center#answer-227724276 Jetzt habe ich das Problem gelöst, in dem ich einfach von der Klasse BlockGlass geerbt habe. Problem an der Sache ist nun wieder, dass ich, wenn ich das Spiel starte, die Glass-Textur habe, jedoch aber nicht mehr die von meinem Block. Meine Frage damit wäre, wie kann ich die Textur ändern?

Code meiner Glass-Klasse (der obere Teil ist der Test vom letzten Mal (letzte Frage), erst nach dem //=========== geht es mit dem bisherigen Code los)

package ultimatevidium;

import java.util.Random;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockBreakable;
import net.minecraft.block.BlockGlass;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;

/*public class Blockooglass extends Block{
    protected Blockooglass(Material material) {
        //super(material);
        super(material);
        
        setCreativeTab(CreativeTabs.tabAllSearch);
        setStepSound(Block.soundTypeGlass);
        setBlockTextureName("ultimatevidium:ooglass");
        setBlockName("Blockooglass");
        setLightOpacity(0);
        canRenderInPass(0);
        
    }
    */
    /*
    
    public boolean isOpaqueCube()
    {
        return false;
    }

    public int getRenderBlockPass()
    {
        return 0;
    }
    public boolean renderAsNormalBlock()
    {
        return false;
    }
    */
    
    //+#+#+#+#+#+#+#+#+
    
    /*public boolean renderAsNormalBlock()
    {
        return false;
    }
    */
    /*
    public boolean canRenderInPass()
    {
        return true;
    }*/
    /*
    public int getRenderBlockPass()
    {
        return 1;
    }
    
    public boolean isOpaqueCube()
    {
        return false;
    }*/
    /*
    public boolean shouldSideBeRendered()
    {
        return false;
    }*/
    
    
    
    
    
    /*public boolean shouldSideBeRendered()
    {
        return false;
    }*/
    
    

//===========================================================================================



public class Blockooglass extends BlockGlass {
    public Blockooglass(int par1, Material ooglass, boolean par3)
    {
        super(par2Material, false);
        this.setCreativeTab(CreativeTabs.tabBlock);
       
        setBlockTextureName("ultimatevidium:ooglass");
        setBlockName("Blockooglass");
    }


   // @SideOnly(Side.CLIENT)

    public int getRenderBlockPass()
    {
        return 0;
    }

    public boolean isOpaqueCube()
    {
        return false;
    }

    public boolean renderAsNormalBlock()
    {
        return false;
    }

    protected boolean canSilkHarvest()
    {
        return true;
    }
}
...zur Frage

Was möchtest Du wissen?