To Quiark : Vedie ma k tomu moja nedôkladnosť :-). Musím si zvykať robiť veci poriadne a nie hala-bala, čiže to je ten dôvod, prečo to chcem spraviť nanovo.
Příspěvky odeslané z IP adresy 193.85.210.–
To Quiark : Vo výpise stále pendluje medzi konštruktorom Mesh() a initComponents(). Ale vzdávam to, musím to spraviť celé na novo. Každopádne ti veľmi pekne ďakujem za čas a námahu.
To Quiark : Presne tak to myslím. Avšak, kde mám umiestniť vytvorenie inštancie triedy Mesh? Nech ho do triedy PlayField umiestnim hocikde, vyhadzuje to rovnakú chybu.
To Zerog : Len tu a tam :-).
To Quiark : Moja chyba :-(.
A ešte by som sa chcel spýtať, napríklad chcem presunúť metódu createMesh z PlayField do triedy Mesh.
Chcem podoktnúť, že metóda createMesh vytvára komponenty do gridLayoutu JPanelu, takže po jeho vytvorení ich tam chcem pridať.
A chcem sa spýtať, akým spôsobom túto metódu zavolať. Keď dám do triedy (po vytvorení JPanelu) objekt, ktorý volá konštruktor triedy Mesh, v ktorom je zavolanie metódy createMesh() (tá by mala do tohto JPanelu pridať komponenty), program vyhodí rovnakú chybu ako som popisoval v prvom príspevku.
Čo robím v tomro prípade zle?
Zdravím,
Narazil som na nasledovný problém. Mám funkčnú triedu PlayField, ktorá, keď obsahuje Main() pracuje správne. Avšak, akonáhle chcem túto triedu zavolať zo samostatnej triedy Main (samozrejme odstráním tú, čo je v PlayField) tak dostanem exception StackOverflowError.
Volám ju takto:
PlayField play = new PlayField();
Konštruktor PlayFieldu:
public PlayField() {
run();
initComponents();
}
run():
public void run() {
new PlayField().setVisible(true);
}
Výpis z exceptionu vyzerá, ako keby sa táto metóda volal stále a stále od znova, avšak bez nejakej akcie, nič sa nevykonáva.
at java.awt.Window.init(Window.java:370)
at java.awt.Window.<init>(Window.java:408)
at java.awt.Frame.<init>(Frame.java:402)
at java.awt.Frame.<init>(Frame.java:367)
at javax.swing.JFrame.<init>(JFrame.java:163)
at lode.PlayField.<init>(PlayField.java:28)
at lode.PlayField.run(PlayField.java:100)
at lode.PlayField.<init>(PlayField.java:29)
at lode.PlayField.run(PlayField.java:100)
at lode.PlayField.<init>(PlayField.java:29)
Vyskúšal som už snáď všetko, čo je v mojich silách. Budem rád, za každú pomoc.