Klassen add Methode funktioniert nicht.

Bitte aktiviere JavaScript!
Hey ich habe 3 Klassen:
Main Klasse:

Java:
public class Main
{
   
    public static void main(String[] args)
    {
        Window window = new Window();
        window.setVisible(true);
       
       
       
       
    }

}
Die Main Methode ist mit der Window Methode verbunden:
Code:
import java.awt.Component;

import javax.swing.JFrame;

public class Window
{

    private JFrame frame;
   
   
    public void setVisible(boolean b)
    {
       
        frame.setVisible(b);
       
    }
   
    public void add(Component comt) {
       
        frame.add(comt);
       
    }
   
   
    public Window()
    {
        frame = new JFrame();
        frame.setSize(800, 800);
       
       
    }
}
Und noch die JLabels Klasse:
Code:
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class JLabels extends JFrame
{
    Window window =  new Window();
    private JLabel test;
   
   
    public JLabels() {
       
        test.setText("rrtegrtegregre");
        test.setBounds(400,400,500,500);
        test.setFont(new Font("Calibri", 0, 30));
        window.add(test);
       
       
       
    }
}
Ich habe das Problem das der JLabel denn ich in der JLabels Klasse habe nicht angezeigt wird.
Bin wirklich Anfänger könntet ihr mal schauen was für Fehler ihr findet?
 
A

Anzeige




Vielleicht hilft dir unser Java-Tutorial hier weiter —> (hier klicken)
Du hast nirgends "new JLabels()".

So funktioniert es:
Java:
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class JLabels extends JFrame
{

    Window window =  new Window();
    private JLabel test = new JLabel();

    public JLabels() {

        window.setVisible(true);
        test.setText("rrtegrtegregre");
        test.setBounds(400, 400, 500, 500);
        test.setFont(new Font("Calibri", 0, 30));
        window.add(test);
    }
}
Java:
public class Main
{
    public static void main(String[] args)
    {
        new JLabels();
    }
}
An deiner Klasse Window musste ich nichts ändern.
 
Zuletzt bearbeitet:
Ich teste es mal aus.

Noch eine Frage wie ist es mit denn Methoden ich muss ja für z. B. setVisible eine public void erstellen aber z. B. für setText was mache ich da? Muss ich für jeden JLabel z. b. test 1 und test 2 zwei methoden machen einmal setTextTest1 & setTextTest2 ? Ich möchte ja jeden Text immer wieder ändern

LG
Fabian
 
- Wozu ist denn die Window-Klasse überhaupt da? Momentan macht diese nur Dinge, die ein JFrame sowieso schon kann
- Warum erbt Labels von JFrame?
- Das ganze ist mEn etwas over engineered
 
Die Window Klasse macht halt einfach nur das Fenster ich persönlich finde es einfach leichter und übersichtlicher.
Und normalerweise besitze ich keine JLabels klasse die ist nur zum test dort.
Ich habe eine Klasse die sich Methoden nennt und dort mache ich alle public void methoden für setBounds und setText. Und über public methoden() { sind die ganzen JLabels & JButtons.
Und dein letzten Punkt verstehe ich nicht ganz:rolleyes:
 
Habe ein wenig weiter gemacht nun hab ich wieder scheiße geschrieben

Mein Ziel ist es JTextField aus der Klasse SearchingSystem anzuzeigen mit denn JLabels aus der Methoden Klasse
Window:
Code:
import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Window extends JFrame
{
  
    private JFrame Window;
  
  
    public void setVisible(boolean b)
    {
      
        Window.setVisible(b);
      
    }
  
    public void adding(Component comp)
    {
      
        Window.add(comp);
      
    }
  
    public Window()
    {
      

      
        Window = new JFrame();
        Window.setTitle("Fenstername");
        Window.setSize(1800,861);
      
      
        Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Window.setLocationRelativeTo(null);
        Window.setAutoRequestFocus(true);
        Window.setResizable(false);
        Window.requestFocus();
      
        Window.setIconImage(getToolkit().getImage("src/Icon.jpg"));
        Window.setVisible(true);
    }
  
  
  
    public static void main(String[] args)
    {
      
        new Methoden();      
        new SearchingSystem();
    }
}
Meine Methoden Klasse:
Code:
import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;

@SuppressWarnings("serial")
public class Methoden extends JFrame
{
  
    Window window = new Window();
  
    private JLabel MadeBy = new JLabel();
    private JLabel Version = new JLabel();
  
  
    public void setText(String text)
    {
      
        MadeBy.setText(text);
        Version.setText(text);
      
    }
  
  
    public Methoden()
    {
      
        MadeBy.setBounds(200,200,200,200);
        MadeBy.setText("ggnhfzhjrhzrhtzur");
        MadeBy.setFont(new Font("Calibri", 0, 30));
        MadeBy.setLayout(null);
      
        Version.setBounds(300,300,200,200);
        Version.setText("gfothgighidkh");
        Version.setFont(new Font("Calibri", 0, 17));
        Version.setLayout(null);
      
      
      
        window.adding(MadeBy);
        window.adding(Version);
    }

}
Und zum Schluss noch meine SearchingSystem Klasse
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JPanel;
import javax.swing.JTextField;

import me.doxing.base.Peoples.testperson;

@SuppressWarnings("serial")
public class SearchingSystem extends JTextField
{
  
    Window window = new Window();
  
    private JPanel Panel = new JPanel();
  
    private JTextField Searching = new JTextField();
  
    public SearchingSystem()
    {
        Searching = new JTextField("htgzrftgrhthgrfthgre", 15);
      
        Searching.addActionListener(new ActionListener()
        {

            @Override
            public void actionPerformed(ActionEvent e)
            {
                String input = Searching.getText();
                if(input.equals("test"))
                {
                  
                    new testperson();
                  
                }
            }
        });
      
      
        Panel.add(Searching);
        window.adding(Panel);
      
    }
}
Nun...
Es werden 2 Fenster geöffnet in einem sind die JLabels und in einem ist der JTextField
Also keine Ahnung was ich da schon wieder hinbekommen habe sitze schon wieder 1 Stunde verzweifelt vorm Rechner und suche nach dem Fehler
 
Das ist einfach nur ein JTextField mit ActionListener wo man z.b mrBrown eingibt und dann soll halt die Klasse mrBrown aufgerufen werden und dann werden paar Information über z.b. dich angezeigt also name, alter, wohnort, religion etc.
 
Also, du möchtest am Ende ein Textfeld haben, dort kann man zB einen Namen eingeben, und dann werden Daten zu der jeweiligen Person angezeigt?
 
Also die Add Methode funktioniert halt einfach nicht richtig habe ja eine public void adding(Component comp)
dort steht halt Window.add(comp); ist daran etwas falsch?
 
Die add-Methode funktioniert ganz wunderbar, dir fehlen nur die Grundlagen, um sie benutzen zu können.

Deshalb fragte ich nach den Anforderungen, dann kann man das einmal durchgehen.
 
Also das Informationen mit dem Textfield angezeigt werden habe ich schon immer geschafft also kein Problem. Und welche Grundlagen brauche ich um sie nutzen zu können? Sorry das ich solange nicht geantwortet habe, habe die ganze Zeit auf der ersten Seite geguckt xD
 
Also egal was ich mache ich habe jetzt einfach setVisible in die main gepackt mit new window aber die methoden klasse wird einfach nicht geladen
 
Jedes Mal, wenn du new Window() aufrufst, erstellst du ein neues Window.
Bisher hast du zwei Windows erzeugt, eins in Methoden und ein anderes in SearchingSystem.

Du musst ein Window erstellen, und das in beiden nutzen, damit alle Elemente dem selben Window hinzugefügt werden.
 
Und wie genau funktioniert das ganze? Ich darf natürlich kein new mehr verwenden aber sowas wie Window window; geht ja auch nicht
 
Und welche Grundlagen brauche ich um sie nutzen zu können?
Kurz: Grundlagen der Objektorientierung.

Du solltest wenigstens wissen, was ein Datentyp ist, den Unterschied zwischen Klasse und Objekt kennen und eine ungefähre Vorstellung davon haben, wie man den Spaß anwendet. Sonst wird das nichts.

Wenn Du wie von @mrBrown nach Anforderungen gefragt wirst, solltest Du die Frage auch mal beantworten. Es geht dabei um eine nicht-technische Problembeschreibung. Ein Kunde kommt nicht bei der Tür rein und sagt: "hey, ich brauche ein Textfield und ein paar Klassen und je nach Eingabe soll eine Instanz von Klasse X erstellt werden".
 
A

Anzeige




Du möchtest Python lernen? Dann sichere dir hier alle wichtigen Grundlagen.
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben