static method

0

Mam problem,otóż chciałam sobie wybrany jFrame stworzyć jako enabled(false) więc stworzyłam:
jFrame1.setEnabled(false);
Niestety wyskakuje błąd:non- static method setEnabled (boolean)camnot be referenced from a staticcontext"
Domyślał się że trzeba napisać static method, tak jak przy zmiennych, tylko nie wiem jak, próbowałam coś takiego:

static method Enabled()
{
return jFrame.setEnabled(false);
}

Ale wyskakuje ten sam błąd, pewnie robię coś źle.Proszę o wskazanie mojego błędu (jestem początkująca)

0

Jaki język? Java?
jFrame to nazwa twojej klasy?

Metody statyczne mogą się odwoływać do innych swoich metod statycznych, obiektów statycznych i argumentów, no i do stworzonych wewnątrz tej metody obiektów. setEnabled pewnie nie jest statyczne.

Poza tym ta metoda chyba nie powinna nic zwracać i jest źle zadeklarowana. Brakuje typu.

0

Tak, jest to java. jFrame- jest to Frame

0

jFrame1 to nazwa klasy czy obiektu? bo z komunikatu wynikałoby że klasy…

0

Nazwa klasy

0

Dziedziczona po Frame? Czy to na pewno Java?

static method Enabled() {
    return jFrame.setEnabled(false);
}

Już sama deklaracja metody jest błędna, bo z tego wynika, że Enabled() ma zwracać typ method, a Frame.setEnabled() nie zwraca nic. Poza tym, nie można statycznie wywoływać niestatycznych metod (a Frame.setEnabled() taka nie jest). Najlepiej pokaż cały kod.

0
Milena24 napisał(a)

Nazwa klasy

to dlatego masz błąd: metoda Enabled musi być wykonana na obiekcie (czyli na zmiennej) a nie na klasie (czyli na typie).

0

Czyli?

0

NewJDialog:

package matematyka.newpackage1;

public class NewJDialog extends javax.swing.JDialog {


    public NewJDialog(java.awt.Frame parent) {
        super(parent);
        initComponents();
    }

    @SuppressWarnings("unchecked")
    

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        //po naciśnięciu przycisku JDialog2 staje się enabled(false);
    }


    public static void main(String args[]) {
   
    }

    private javax.swing.JButton jButton1;

}

JDialog2:

package matematyka.newpackage1;

public class JJDialog2 extends javax.swing.JDialog {


    public JJDialog2(java.awt.Frame parent) {
        super(parent);
        initComponents();
    }

    @SuppressWarnings("unchecked")
    


    public static void main(String args[]) {
   
    }
}

To jest mój kod

0

Którą metodą main() uruchamiasz program i gdzie masz wywołania setEnabled()?

0

setEnabled- napisałam że:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        //po naciśnięciu przycisku JDialog2 staje się enabled(false);

czyli zamiast komentarza ma być: JDialog2.setEnabled(false;)
Program uruchamiam przez main.java:

import javax.swing.JFrame;

public class Main {

      JFrame okno = new wybieraniea();
    okno.setLocationRelativeTo(null);
    okno.setVisible(true);

    }
}
0

Ale jak na rzecz jakiego okna chcesz wywołać to setEnabled()? Gdzie masz referencję do obiektu tej klasy? Czym jest wybieraniea? I Po co w każdej klasie masz zdefiniowaną metodę main?

0

Przepraszam, zaszła pomyłka, program uruchamiam przez:

 

import javax.swing.JDialog;

public class Main {

      JDialog okno = new NewJDialog(null);
    okno.setLocationRelativeTo(null);
    okno.setVisible(true);

JDialog okno2 = new NewJDialog2(null);
    okno2.setLocationRelativeTo(null);
    okno2.setVisible(true);

setEnabled(false)- do JDialog2
Nie mam referencji (chyba nie[jestem początkująca]). Program robię w (JBuilder-netbeans[chyba tak to się nazywa])



0

A i jeszcze jeden błąd zamiast NewJDialog2 powinno być:JDialog2

0

No właśnie, metodę trzeba wywołać na rzecz konkretnego obiektu (dialogu). Referencję do niego musisz jakoś przekazać do NewJDialog. W którym miejscu tworzysz jakiś obiekt JDialog2?

0

Pomiędzy:
@SuppressWarnings("unchecked")
a:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)

0

Pokaż ten kod.

0

Przecież już pokazałam wszystkie kody

0

Chodziło Ci o coś takiego:

JDialog okno = new JDialog2(null);
           okno.setEnabled(false);

????

0

Dokładnie.

0

Coś takiego próbowałem, błędu nie było, lecz po naciśnięciu przycisku nic się nie zmieniało:(

1 użytkowników online, w tym zalogowanych: 0, gości: 1