Miért nem működik rendesen a kilépés-gomb a Java-ban?
Adott a következő:
parancssorban fordítok. Van egy leforduló programom, amit ha a "bezárás" gombbal bezárok, a parancssorban villog a kurzor és nem lehet semmit se írni,mintha be se zártam volna a java-programot.
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
public class asd{
public static class osztaly extends JFrame{
JFrame frame=new JFrame();
public osztaly(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0,0,100,30);
}
}
public static void main(String args[]){
osztaly a=new osztaly();
a.setVisible(true);
}
}
A probléma ott van, hogy KETTŐ darab JFrame objektumod van.
Az "osztaly" típusú objektumod maga is egy JFrame (lásd extends JFrame)
Ezen az objektumon belül létrehoztál (minek?!) egy másik JFrame-et (frame).
A close operation-t ennek a frame-nek állítottad be.
Viszont a main-ből az "a" nevű "osztaly" típusú JFrame-et jeleníted meg, ami nem kapott close operation-t.
"extends JFrame":ha ez nincs,akkor baj.
Ha az osztályban létrehozott nincs,akkor az baj.
(szerencsére kezdő vagyok Java-ból)
Köszi a választ.:)
> "extends JFrame":ha ez nincs,akkor baj.
> Ha az osztályban létrehozott nincs,akkor az baj.
Hát igen, el kéne dönteni, mit szeretnél. Definiálni egy saját JFrame-et (örökléssel), vagy használni egyet (adattagként).
Ha az alapok ennyire nem mennek, érdemes lenne nem GUI-t tákolni, hanem az alapokat elsajátítani. :)
+1 javaslat: hasznos betartani a névkonvenciókat, pl. minden osztályt nagybetűvel kezdeni. :)
Visszatérve a feladatra, próbáld meg így:
public class App {
public static class Ablak extends JFrame{
public Ablak(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(0,0,100,30);
}
} // Ablak
public static void main(String args[]){
Ablak a = new Ablak();
a.setVisible(true);
}
} // App
Amit csináltam az az, hogy kidobtam a felesleges adattagot, illetve a konstruktorban az ablak saját magának állítja be a close operation-t. :)
Köszi az ismételt hozzászólást.:)
A "this" nem jutott eszembe.:D
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!