jeditorpanel aus anderer klasse ansprechen

Status
Nicht offen für weitere Antworten.

_Smash_

Mitglied
hallo

ich habe in einer klasse eine funktion

Code:
public void add(String s)
    {
        x[anzahl] = s;
        // GUI.jEditorPane.setText(x[anzahl]);
        anzahl++;
    }

das auskommentierte bezeichnet das was ich machen will 🙂 ich möchte den text in das jEditorPane schreiben.
leider geht das nicht, weil das pane nur private access hat.
wenn ich eine public funktion in die gui schreibe, kann die den text ändern, allerdings kann ich die methode von meiner klasse aus nicht ansprechen, da dann immer kommt: non-static method can not be referenced from a static context.

wie kann ich das also ansprechen?

der code der GUI sieht so aus:

Code:
import java.lang.Object.*;
import javax.swing.*;

/**
 *
 * @author  _Smash_
 */
public class GUI extends javax.swing.JFrame {
    
    String filename = new String();
    
    /** Creates new form GUI */
    public GUI() {        
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jEditorPane1 = new javax.swing.JEditorPane();

        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        setTitle("MPEG2 Datenstrom Parser");
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jButton1.setText("open File");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });

        getContentPane().add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 10, -1, -1));

        jButton2.setText("parse");
        jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton2MouseClicked(evt);
            }
        });

        getContentPane().add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 10, -1, -1));

        jButton3.setText("print");
        jButton3.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton3MouseClicked(evt);
            }
        });

        getContentPane().add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 10, -1, -1));

        jButton4.setText("save File");
        jButton4.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton4MouseClicked(evt);
            }
        });

        getContentPane().add(jButton4, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 10, -1, -1));

        jEditorPane1.setEditable(false);
        jEditorPane1.setMinimumSize(new java.awt.Dimension(300, 200));
        jEditorPane1.setPreferredSize(new java.awt.Dimension(300, 200));
        getContentPane().add(jEditorPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 40, 290, -1));

        pack();
    }

    private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {
        Ergebnis.drucken();
    }

    private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {
        Ergebnis.save();
    }

    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
       Parse.parse(filename);
    }

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
        
        filename=ChooseFile.file(); 
        
    }
    
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        
        System.exit(0);
        
    }
    
   
    
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JEditorPane jEditorPane1;
    // End of variables declaration
    
}
 
mach in deiner gui-klasse eine set-methode, übergib dort den string und setz den text in der gui-klasse. irgenwie verwirrend was du da machen willst...
 
das hab ich doch schon probiert:
--snip--
wenn ich eine public funktion in die gui schreibe, kann die den text ändern, allerdings kann ich die methode von meiner klasse aus nicht ansprechen, da dann immer kommt: non-static method can not be referenced from a static context.
--snip--

wenn ich in die gui eine paneupdate klasse schreibe, dann kann ich diese klasse nicht ansprechen, weil dann der fehler non-static method paneupdate can not be referenced from a static context angezeigt wird.
 
dann musst du entweder deine static-klasse non-static machen oder deine non-static-klasse static machen...
 
ich hab mit awt/swing eigentlich garnichts am hut. aber wenn du in deiner gui-klasse eine methode wie

public void setMyText(String _text)
{
this.jEditorPane1.setText(_text);
}

machst, kommt auch ein error oder wie?
 
zur faq:

was ist aber, wenn zb fritz in einer anderen klasse referenziert ist und man will trotzdem auf fritz.test zugreifen?
 
Dann musst du eine Referenz auf dieses andere Objekt haben, und es nach dem fritz fragen.
Code:
public class Evil{
  private Test fritz = new ...

  public Test getFritz(){
    return fritz;
  }
}

Code:
Evil evil = ...

Test fritz = evil.getFritz();
fritz.doSomething();

Falls es nur ein einziges Evil gibt, kannst du auch das machen:
Code:
public class Evil{
  public Evil instance = new Evil...
  ...
}
Code:
Evil evil = Evil.instance;
Test fritz = evil.getFritz();
...

Aber du kommst nicht drumrum: irgendwann musst du in diese "Kette" von Referenzen hineinspringen.
Das funktioniert bei deinem Problem oben genau gleich...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben