Kezdőoldal » Számítástechnika » Programozás » Miért nem működik rendesen a...

Miért nem működik rendesen a kilépés-gomb a Java-ban?

Figyelt kérdés

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);



}


}


2014. szept. 1. 21:52
 1/5 anonim ***** válasza:

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.

2014. szept. 1. 22:07
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

"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.:)

2014. szept. 1. 22:13
 3/5 anonim ***** válasza:

> "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. :)

2014. szept. 1. 22:20
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:

Köszi az ismételt hozzászólást.:)

A "this" nem jutott eszembe.:D

2014. szept. 1. 23:28
 5/5 anonim ***** válasza:
Igazából, ha az ős metódusát hívja super kellene this helyett, de ez apróság.
2014. szept. 1. 23:43
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!