Klassen Zugriff auf Objekt anderer Klasse

Chillma

Mitglied
Guten Abend,
ich weiß das es wahrscheinlich schon andere Threads zu diesem Thema gibt, jedoch habe ich noch nichts konkretes gefunden was mir hilft. Ich bin im ersten Semester und bin daher noch ein Anfänger.
Ich habe folgendes Problem. Ich habe die Klassen KFrame, KButton und Menue erstellt. In der Klasse Menue kann ich dann beliebig viele KFrames und auch KButtons erzeugen lassen. Mein Problem ist dass ich in der Klasse Menue die Buttons die ich erzeugt habe nicht in das Panel bekomme. Das Panel ist in der Klasse KFrame erzeugt worden. Ich brauche nun in der Klasse Menue zugriff auf das Objekt "panel" welches in der Klasse KFrame deklariert wurde, um die Buttons die ebenfalls in der Klasse Menue erzeugt wurden dem panel zuzuweisen. Ich weiß nicht mehr weiter ich habe schon viel gelesen und probiert jedoch ohne Erfolg. Warum wird mein Button dem Panel nicht zugewiesen? Alles ein wenig verwirrend aber hier nochmal mein Code:
Java:
import javax.swing.*;
import java.awt.*;
public class KFrame 
{
    // Variablen-deklaration der Klasse KFrame
    private int size1, size2;
    private String name;
    private boolean sichtbar, gleich;
    private Color color;
    JPanel panel = new JPanel();
    
    public KFrame(int x, int y, String pName, boolean pSichtbar, boolean pGleich,
    Color pColor)
    {
       //Kontruktor der Klasse KFrame
       size1 = x;
       size2 = y;
       name = pName;
       sichtbar = pSichtbar;
       gleich = pGleich;
       color = pColor;
    }
    
    public void createFrame()
    {
       //Hier wird ein Frame erzeugt 
       JFrame frame = new JFrame(name);
       frame.setVisible(sichtbar);
       frame.setSize(size1, size2);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setResizable(gleich);
       
       frame.add(panel);
       panel.setLayout(null);
       panel.setBackground(color);  
    }
}
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Menue extends JPanel
{
    //Deklaration von Variablen der jeweiligen Klassen
    private KFrame hauptfenster, nebenfenster1, nebenfenster2;
    private KButton spielstart, leaderboard, credits, exit;
    private KLabel titel, anleitung, lText, cText;

    public Menue()
    {
        //Erzeugung des Frame, Button und des Labels
        hauptfenster = new KFrame(1280,720,"Kick Snare Click Square",true,false,Color.gray);
        spielstart = new KButton(120,50,100,200,"Spielstart");
        titel = new KLabel(22,22,22,22,"jo",Color.black,"Segoe Script",Font.PLAIN,30);
    }
    
    public void main()
    {
       //Hier werden die Frames, Buttons und Labels erzeugt
       hauptfenster.createFrame();
       add(spielstart);// hier wird der Button Spielstart dem Panel NICHT zugewiesen ...
       spielstart.createButton();
       titel.createLabel();  
    }
}
 
T

tröööt

Gast
so wirklich struktur ist in deinem code aber nicht zu finden ...

erst erzeugst du ein objekt von KFrame und initialisierst dieses komplett und stellst es dar ...
dann fügst du dem JPanel einen KButton hinzu und callst dann erst createButton() ? also alleine vom lesen macht das wenig sinn ...

ich denke das dein problem zur zeit erstmal weniger darin besteht mit referenzen richtig umzugehen und klassen entprechend zu designen als viel mehr darin überhaupt strukturiert zu schreiben ... von scheinbar fehlenden GUI-grundlagen abgesehen ...

da der code unvollständig ist und auch nicht wirklich klar wird was du genau machen willst ... und es scheint das dir einfach für das was du machen willst noch wissen fehlt würde ich dir vorschlagen erstmal grundsätzlich gute bücher zum thema strukturiertes programmieren und GUI-grundlagen zu lesen ...

findet sich alles in "Java ist auch eine Insel" ...

ansonsten kann man dir so schlecht helfen
 

Chillma

Mitglied
Also ich ahbe einen funktionsfähigen Code geschrieben, jedoch ist dieser ziemlich lang und Code-Duplizierung ist vorhanden. Ich wollte eine Zusammengefasste, komprimierte Lösung finden. Da ich in diesem Code sehr viel, sehr oft erstelle habe ich mir gedacht, alles komprimiert zu schreiben, jedoch scheiter ich wie oben schon genannt.
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MainMenue 
{ 
     public static void main (String[] args)
     {
        //Erstelle einen Rahmen(Anton Stepin)
        JFrame frame = new JFrame("Kick Snare Click Square");
        frame.setVisible(true);
        frame.setSize(1280,720);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLocation(0, 0);

        //Füge die Inhaltsfläche hinzu(Anton Stepin)
        JPanel panel = new JPanel();
        frame.add(panel);
        panel.setLayout(null);
        panel.setBackground(Color.gray);
        
        //Füge dem Inhalt eine Überschrift hinzu(Anton Stepin)
        JLabel label = new JLabel("<html><body><center>Kick Snare Click Square</center></body></html>");
        panel.add(label);
        label.setBounds(250, 0, 1280, 120);
        Font titel = new Font("Segoe Script", Font.BOLD, 60);
        label.setFont(titel);
        label.setForeground(Color.cyan);
        
        //Füge dem Inhalt die Introduction-Überschrift hinzu(Anton Stepin)
        JLabel label2 = new JLabel("Anleitung");
        panel.add(label2);
        label2.setBounds(1000, 140, 1280, 100);
        Font anleitung = new Font("Segoe Script", Font.BOLD, 30);
        label2.setFont(anleitung);
        label2.setForeground(Color.cyan);
        
        //Füge Introduction einen Text hinzu(Anton Stepin)
        JLabel label3 =new JLabel("<html><body>Für dieses Spiel wird nur<br>" + 
                                  "die Maus benötigt. Beim Spiel-<br>" + 
                                  "start sehen Sie 9 Vierecke, <br>" +
                                  "die langsam ihre Farbe ändern.<br>" + 
                                  "Durch Mausklicks verhindern <br>" + 
                                  "Sie einen totalen Farbumsprung.<br>" + 
                                  "Versuchen Sie solange wie nur<br>" +
                                  "möglich die Vierecke daran zu<br>" + 
                                  "hindern ihre Farbe zuändern.<br>" + 
                                  "Ändert sich nur ein Viereck<br>" +
                                  "vollständig, ist das Spiel<br>" + 
                                  "beendet.</body></html>");
        panel.add(label3);
        label3.setBounds(1000, 130, 1280, 500);
        Font introductionText = new Font("Serif", Font.PLAIN, 20);
        label3.setFont(introductionText);
        
        //Füge dem Inhalt Buttons hinzu(Anton Stepin)
        JButton button1 = new JButton("Spielstart");
        JButton button2 = new JButton("Leaderboard");
        JButton button3 = new JButton("Credits");
        JButton button4 = new JButton("Schließen");
        button1.setSize(120, 50);
        button1.setLocation(100, 200);
        button2.setSize(120, 50);
        button2.setLocation(100, 300);
        button3.setSize(120, 50);
        button3.setLocation(100, 400);
        button4.setSize(120, 50);
        button4.setLocation(100, 500);
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(button4);
        
        //Erstelle Aktionen für die Buttons(Anton Stepin)
        button1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                
            }
        }
        );
        button2.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                //Ein neues Fenster falls man man auf den Leaderboard Button drückt(Anton Stepin)
                JFrame frame3 = new JFrame("Leaderboard");
                frame3.setVisible(true);
                frame3.setSize(400,580);
                frame3.setResizable(false);
                JPanel panel3 =new JPanel();
                panel3.setLayout(null);
                panel3.setBackground(Color.gray);
                frame3.add(panel3);
                frame3.setLocation(450, 140);
             
                //Füge dem Inhalt die Leaderboard-Überschrift hinzu(Anton Stepin)
                JLabel label = new JLabel("Leaderboard");
                panel3.add(label);
                label.setBounds(95, 10, 600, 40);
                Font leaderBoard = new Font("Serif", Font.BOLD, 35);
                label.setFont(leaderBoard);
                label.setForeground(Color.cyan);
                
                JLabel label2 = new JLabel("<html><body>1.<br>"+"2.<br>"+"3.<br>"+
                "4.<br>"+"5.<br>"+"6.<br>"+"7.<br>"+"8.<br>"+"9.<br>"+"10.<br></body></html>");
                panel3.add(label2);
                label2.setBounds(0, 0, 400, 580);
                Font leaderBoard2 = new Font("Serif", Font.BOLD, 30);
                label2.setFont(leaderBoard);
            }
        }
        );
        button3.addActionListener(new ActionListener()
        {
             //Ein neues Fenster für den Fall dass man auf den Credits Button drückt(Anton Stepin)
             public void actionPerformed(ActionEvent e)
             { 
                JFrame frame2 = new JFrame("Credits");
                frame2.setVisible(true);
                frame2.setSize(400,580);
                frame2.setResizable(false);
                JPanel panel2 =new JPanel();
                panel2.setLayout(null);
                panel2.setBackground(Color.white);
                frame2.add(panel2);
                frame2.setLocation(450, 140);
             
                //Füge dem Inhalt die Credits-Überschrift hinzu(Anton Stepin)
                JLabel label = new JLabel("Credits");
                panel2.add(label);
                label.setBounds(5, 20, 600, 40);
                Font credits = new Font("Serif", Font.BOLD, 35);
                label.setFont(credits);
        
                //Füge Credits einen Text hinzu(Anton Stepin)
                JLabel label2 =new JLabel("<html><body>Kick Snare Click Square<br>"+
                                       "Version 1.0<br>"+
                                       "<br>"+
                                       "Zuständig für das Design:<br>"+
                                       "   XXX<br>"+
                                       "<br>"+
                                       "Zuständig für die Spielmechanik:<br>"+
                                       "   XXX<br>"+
                                       "<br>"+
                                       "Zuständig für das Spielablauf:<br>"+
                                       "   XXX<br>"+
                                       "<br>"+
                                       "Zuständig für das Dateimanagement:<br>"+
                                       "   XXX</body></html>");
                                       panel2.add(label2);
                                       label2.setBounds(5, 40, 600, 500);
                Font creditsText = new Font("Serif", Font.PLAIN + Font.ITALIC, 25);
                label2.setFont(creditsText);
                label2.setForeground(Color.gray);
            }
        }
        );
        button4.addActionListener(new ActionListener()
        {
            //Ein Dialogfenster für das Beenden des Programms, mit der Auswahl ja / nein(Anton Stepin)
            public void actionPerformed(ActionEvent e)
            {
                int response = JOptionPane.showConfirmDialog(null, "Wollen Sie das Spiel wirklich beenden?", 
                "Wirklich???", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
             
                if(response == 0)
                {
                    System.exit(0);
                }
            }
        });
     }
 }
 
Zuletzt bearbeitet von einem Moderator:

Chillma

Mitglied
Geht das ganze vielleicht mit getter/ setter Methoden? Also dass ich von der Klasse Menue auf das Objekt panel der Klasse KFrame zugreifen kann/ es mir in die Klasse Menue hole?
 
S

SlaterB

Gast
das geht, ja,
zumindest als grundsätzlicher Weg, mit tausenden Problemen am Wegesrand

an sich eine sehr einfache Sache ohne die fast kein Programm funktioniert,

------

sonstige Anmerkungen:
createFrame():
setVisible(true); aufs JFrame besser erst ganz zum Schluss, wenn alles andere eingefügt ist

------

> panel.setLayout(null);
ein einfaches add() wird bei null-Layout nicht ausreichen, allerdings klingt '120,50,100,200' beim Button nach den nötigen Bounds

---------

> add(spielstart);// hier wird der Button Spielstart dem Panel NICHT zugewiesen ...
> spielstart.createButton();

spielstart mag ein JPanel sein, dann gehts vielleicht, sonst komisches Konstrukt,
was wird geadded wenn der Button, der spielstart angeblich sein soll, erst danach intern erzeugt wird?

bei KLabel usw. ähnlich,
warum erbt eigentlich Menue von JPanel, wird das auch irgendwo eingefügt? auf solche Punkte unbedingt achten,
lieber zu wenig als zu viel erben
 

Chillma

Mitglied
Hmm danke für die Antworten. Das mit dem spielstart.createButton ist einfach ausversehen nach unten gerutscht durch 100-faches rumprobieren. es war vorher über dem add(spielstart). Mein Problem ist einfach dass ich die Button bzw. Labels nicht in das Panel bekomme, da mir der zugriff fehlt.
 
S

SlaterB

Gast
also hauptfenster.getPanel().add(..)
mit entsprechendener getPanel()-Methode

oder vielleicht eher
hauptfenster.addToYourPanel(xy);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Kein Zugriff auf erstelltes Objekt aus anderer Methode Java Basics - Anfänger-Themen 6
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
B Klassen Zugriff auf ein Objekt einer Klasse aus einer Methode heraus Java Basics - Anfänger-Themen 4
S Zugriff auf Objekt Java Basics - Anfänger-Themen 5
J get methoden zugriff und objekt erzeugung Java Basics - Anfänger-Themen 30
F Zugriff auf Objekt einer anderen Klasse Java Basics - Anfänger-Themen 7
M MVC - Problem mit Zugriff auf Objekt Java Basics - Anfänger-Themen 4
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
D OOP Zugriff auf Objekte A in Klasse A aus Objekt B in Klasse B Java Basics - Anfänger-Themen 3
D OOP Zugriff auf eine Klasse aus einem Interface-Objekt Java Basics - Anfänger-Themen 7
N OOP Zugriff auf eine Objekt innerhalb einer Klasse aus statischen Methoden Java Basics - Anfänger-Themen 9
C Zugriff auf Objekt in JSP Java Basics - Anfänger-Themen 2
G Zugriff auf JTree-Objekt Java Basics - Anfänger-Themen 2
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
P Zugriff auf übergeordnetes-/ Besitzer-Objekt Java Basics - Anfänger-Themen 5
T Zugriff auf umgebendes Objekt mittels Objekt innerer Klasse Java Basics - Anfänger-Themen 2
° Zugriff auf ein Objekt der eigenen Klasse Java Basics - Anfänger-Themen 2
D Zugriff auf ein verschachteltest Objekt Java Basics - Anfänger-Themen 14
M Absturz bei Zugriff auf Objekt-Arrays Java Basics - Anfänger-Themen 4
M objekt (linkedList) zugriff aus einer anderen klasse Java Basics - Anfänger-Themen 3
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
C Zugriff auf Methode Java Basics - Anfänger-Themen 2
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
T Zugriff auf Control anderer Klasse Java Basics - Anfänger-Themen 5
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
R TreeSet Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 8
C Kein Zugriff auf Klassenmethoden in Main Methode Java Basics - Anfänger-Themen 23
H Zugriff verweigert Java Basics - Anfänger-Themen 5
moiss002 Umgebungsvariable Kein Zugriff auf ein Array Java Basics - Anfänger-Themen 7
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
B Zugriffsmodifier, Zugriff außerhalb Package Java Basics - Anfänger-Themen 5
C Zugriff auf Attribut von Oberklasse Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
M Gettter/Setter Methoden Klassenfelder kapselung und zugriff? Java Basics - Anfänger-Themen 1
S Zugriff auf protected Fields = guter Programmierstil? Java Basics - Anfänger-Themen 11
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
L Methoden Zugriff <identifier> expected Java Basics - Anfänger-Themen 13
T Java - Zugriff nur mit CLASSPATH ? Java Basics - Anfänger-Themen 7
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
D Zugriff auf Methode einer anderen Klasse Java Basics - Anfänger-Themen 5
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
N ArrayList in eigener Klasse erzeugen mit Zugriff Java Basics - Anfänger-Themen 7
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
J Klassen Zugriff auf ein "String Array" Java Basics - Anfänger-Themen 6
H Datentypen ArrayList in ArrayList: Zugriff Java Basics - Anfänger-Themen 6
J Datenbank Zugriff Java Basics - Anfänger-Themen 24
T Zugriff auf JCheckBox Java Basics - Anfänger-Themen 8
E Netzlaufwerk Zugriff schlägt fehl Java Basics - Anfänger-Themen 11
C Group, Actor und Instanz-Zugriff, LibGDX Java Basics - Anfänger-Themen 4
S Zugriff auf Attribut einer unbekannten Klasse erhalten Java Basics - Anfänger-Themen 6
R Methoden Methode der GUI-Klasse Zugriff auf Methoden der Hauptklasse Java Basics - Anfänger-Themen 9
S Vererbung Zugriff auf die Basisklasse einer "zweiten" Erweiterungsklasse Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
F Klassen Zugriff auf verschachtelte Objekte Java Basics - Anfänger-Themen 11
J Sichtbarkeit und Zugriff Java Basics - Anfänger-Themen 9
G Wieviel kostet der Zugriff auf Objektattribute im Vergleich zur Erstellung von vars in Methode? Java Basics - Anfänger-Themen 11
L Zugriff auf zwei Java-Quellcodes Java Basics - Anfänger-Themen 3
A OOP Zugriff auf Objekte von außen Java Basics - Anfänger-Themen 8
M Kapselung Datenkapselung Sinn direkter Zugriff? Java Basics - Anfänger-Themen 1
G Methoden Zugriff auf Methode.. aus einer anderen Klasse Java Basics - Anfänger-Themen 6
J JDialog Zugriff auf parent JDialog Java Basics - Anfänger-Themen 5
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
J Erste Schritte Zugriff auf Eigenschaft Java Basics - Anfänger-Themen 2
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
C 5 - Zugriff verweigert Java Basics - Anfänger-Themen 1
K Zugriff auf Variabeln Wert einer Instanz Java Basics - Anfänger-Themen 4
A Methoden Zugriff auf eingelesene Variablen in der main Methode (ohne Änderung der Parameterliste) Java Basics - Anfänger-Themen 4
Z Methoden Zugriff mit Klasse 3 auf Methode von Klasse 2 welche in Klasse 1 erzeugt wird Java Basics - Anfänger-Themen 6
Z Zugriff auf andere Methoden Java Basics - Anfänger-Themen 12
Z Zugriff auf Pakete Java Basics - Anfänger-Themen 5
G Zugriff zwischen Klassen Java Basics - Anfänger-Themen 15
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
F Klassen Zugriff auf Fenster aus versch. Klassen Java Basics - Anfänger-Themen 5
M Variablen Zugriff von außerhalb eines Blockes auf eine Variable innerhalb eines Blockes Java Basics - Anfänger-Themen 2
U Methoden Zugriff auf Array von weiterer Methode einer Klasse, Rückgabewert Problem Java Basics - Anfänger-Themen 5
B Klassen Zugriff auf Daten der Child-Klasse Java Basics - Anfänger-Themen 9
W Typisierte ArrayList und der Zugriff auf den Typ Java Basics - Anfänger-Themen 5
M Zugriff auf Klasse Java Basics - Anfänger-Themen 2
K Zugriff auf C: Java Basics - Anfänger-Themen 5
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
V Zugriff auf jProgressbar Java Basics - Anfänger-Themen 10
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
T ZUgriff auf 'Werte' Java Basics - Anfänger-Themen 3
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben