JFrame verkleinern

Status
Nicht offen für weitere Antworten.

Developer_X

Top Contributor
Hi, ich habe mein eigenes JFrame geschrieben, also undecorated, und das X und die die Vergrößerungs Taste durch Buttons, am rechten rand oben, ersetzt,
es gibt da diesen strich´, der das frame verkleinert, wie kann man diese aktion machen, damit das frame verkleinert wird?
Code:
JFrame f = new JFrame();
Also wie kann ich die selbe aktion erfüllen, mit java, wie der strich, neben dem "X" und dem "Vergrößerungs" Feld, bei normalen Frames?
 

Developer_X

Top Contributor
SlaterB der BUtton erscheint nicht, wenn ich deinen Code ein füge, in seinen Action Listener
Code:
JFrame f = new JFrame();
f.setLayout(null);
	 JButton b = new JButton("X"); b.setForeground(Color.red);b.setBackground(Color.black);
  	 b.setBounds(d.width-50,0,50,50); 
  	 b.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent evt) {b1ActionPerformed(evt);}private void b1ActionPerformed(ActionEvent evt) {setExtendedState(JFrame.ICONIFIED); }});
  	f.add(b);
 

Developer_X

Top Contributor
ich kann daraus nicht viel entziffern, ich will so was gar nicht, ich hab fullscreen, und will einen Button dahin machen, wenn ich auf ihn klicke, dann soll das fenster verkleinert werden, wenn ich das einfüge wird der button nicht angezeigt, kannst du mir dazu vielleicht was sagen
bitte==
 
S

SlaterB

Gast
wenn du den ActionListener entfernst, wird der Button dann angezeigt?
nein? -> hat gar nix mit der ActionListener-Aktion zu tun

> b.setBounds(d.width-50,0,50,50);
kann alles mögliche bedeuten, wenn man d nicht kennt,
ohne setSize()-Aufruf ist bei mit das JFrame eh komplett leer usw,

vollständige Programme posten, dazu gehört auch eine Klasse, eine main-Methode usw.!

falls der ActionListener bei dir kompiliert, läßt das vermuten, dass du dich in einer Klasse befindest, die von Frame/ JFrame erbt,
wenn du aber ein separates JFrame-Objekt f hast und anzeigst, dann wird dir der Aufruf beim this-Objekt der eigenen Klasse wenig helfen


setExtendedState() muss natürlich an f aufgerufen werden

oder der Button in das this-Objekt eingefügt werden
 

Developer_X

Top Contributor
der button funktioniert, ohne die actionlistener methode, man sieht ihn
ich weiß wo sich d befindet, ok?
das liegt an diesem
Code:
setExtendedState(JFrame.ICONIFIED
 
S

SlaterB

Gast
wie du meinst,
dass ein ActionListener das Layout ändert, ist mir bisher aber noch nicht vorgekommen,

vielleicht gibts eine Fehlermeldung wegen des von mir schon halb erwähnten seltsamen Aufruf, die du nicht siehst oder nicht ausgibst,
teste mal System.out.println("Meldung"); nach der Deklaration des ActionListeners,
wenn nicht zu sehen, aber ohne ActionListener schon, dann deutet das auf Abbruch durch Exception hin


ein vollständiges Programm ist es immer noch nicht
 

Developer_X

Top Contributor
so viel kann ich sagen

Code:
 public Main_1() 
  {
	  
	  
      super("Test"); 
      
      Toolkit tk = Toolkit.getDefaultToolkit();
      final Dimension d = tk.getScreenSize();
		 
      setUndecorated(true); 
      setSize(900,900); 
      setVisible(true); 
      
      Cursor cur = getToolkit().createCustomCursor(
			  new ImageIcon( "F:/Cursor.gif" ).getImage(),
			  new Point(0,5), "Cursor" );

	setCursor( cur );			

      
    String fnm =  "F:/Rayman/Level_1/World.txt";        
   
    MazeManager mm = new MazeManager(fnm);
    BirdsEye be = new BirdsEye(mm);      										

    WrapMaze3D w3d = new WrapMaze3D(mm, be );

    Container c = getContentPane();
    c.setLayout( new BoxLayout(c, BoxLayout.X_AXIS) );
    c.add(w3d);  
    c.add( Box.createRigidArea( new Dimension(d.width,d.height)) ); 
    
    Box vertBox = Box.createVerticalBox();
    
    vertBox.add( Box.createRigidArea( new Dimension(d.width-100,d.height)) );
    c.add(vertBox);

    pack();    
    URL url = null;
  	try {
  		url = new URL("file:///F:/Rayman/Level_1/S.Loodp.1.wav");
  	} catch (MalformedURLException e) {
  		// TODO Auto-generated catch block
  		e.printStackTrace();
  	} 
  	AudioClip clip = Applet.newAudioClip(url); 
  	 clip.loop(); 
  	 warte(10);
  	 
  	 JButton b = new JButton("X"); b.setForeground(Color.red);b.setBackground(Color.black);
  	 b.setBounds(d.width-50,0,50,50); 
  	 b.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent evt) {b1ActionPerformed(evt);}private void b1ActionPerformed(ActionEvent evt) {setExtendedState(JFrame.ICONIFIED); }});
  	 add(b);
  	 

  	 
    
  }
 

Developer_X

Top Contributor
nein warte, jetzt ist es da, wenn ich aber draufklicke, dass fenster sich verkleinert, und ich es dann wieder vergrößere ist der button weg, was kann ich dagegen tun
 

Ebenius

Top Contributor
Hier nochmal formatierter Quelltext: [HIGHLIGHT="Java"]public Main_1() {
super("Test");

Toolkit tk = Toolkit.getDefaultToolkit();
final Dimension d = tk.getScreenSize();

setUndecorated(true);
setSize(900, 900);
setVisible(true);

Cursor cur =
getToolkit().createCustomCursor(
new ImageIcon("F:/Cursor.gif").getImage(), new Point(0, 5),
"Cursor");

setCursor(cur);

String fnm = "F:/Rayman/Level_1/World.txt";

MazeManager mm = new MazeManager(fnm);
BirdsEye be = new BirdsEye(mm);

WrapMaze3D w3d = new WrapMaze3D(mm, be);

Container c = getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.X_AXIS));
c.add(w3d);
c.add(Box.createRigidArea(new Dimension(d.width, d.height)));

Box vertBox = Box.createVerticalBox();

vertBox.add(Box.createRigidArea(new Dimension(d.width - 100, d.height)));
c.add(vertBox);

pack();
URL url = null;
try {
url = new URL("file:///F:/Rayman/Level_1/S.Loodp.1.wav");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
AudioClip clip = Applet.newAudioClip(url);
clip.loop();
warte(10);

JButton b = new JButton("X");
b.setForeground(Color.red);
b.setBackground(Color.black);
b.setBounds(d.width - 50, 0, 50, 50);
b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {
b1ActionPerformed(evt);
}

private void b1ActionPerformed(ActionEvent evt) {
setExtendedState(JFrame.ICONIFIED);
}
});
add(b);
}[/HIGHLIGHT]

Ebenius
 
S

SlaterB

Gast
> was kann ich dagegen tun

ordentliches Layout,
Box kenne ich nicht, aber dass deren Größe die ganze Screensize einnimmt, läßt wenig Platz für anderes..

wozu b.setBounds(d.width - 50, 0, 50, 50);
wenn du inzwischen doch BoxLayout verwendest?

bitte erst ein klares Konzept, dann anfangen zu programmieren,
einen wav-Sound musst du nicht zwischendurch auch noch starten, während du gerade am Layout feilst

pack(); wahrscheinlich erst ganz am Ende aufrufen

@Ebenius:
überall Code doppelt posten ist auch nicht gerade übersichtlich..
(von bunten Text in meinem Posting ganz abgesehen)
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
@Ebenius:
überall Code doppelt posten ist auch nicht gerade übersichtlich..
(von bunten Text in meinem Posting ganz abgesehen)
Doppelpost sehe ich ein, aber der Code oben war wirklich nicht so recht lesbar und komplett umformatieren wollte ich ihn nicht im Originalbeitrag. Bunt bekommst Du weg, wenn Du nicht den WYSIWYG-Editor, sondern den Standard-Editor nimmst. Und die fehlenden Zeilennummern beim normalen CODE-Tag stören gewaltig. Soviel zu meiner Motivation.

Ebenius
 

Ebenius

Top Contributor
Developer_X, normaler Weise baut man eine GUI doch ein bisschen anders auf. Ein Standard-Beispiel findest Du im Sun Java Tutorial » Lesson: Performing Custom Painting. Arbeite Dich da mal durch und beachte folgende Aufteilung: Eine Start-Klasse die nicht von einer GUI-Komponente erbt, mit einer main-Methode, die über den Event Dispatch Thread die GUI aufbaut. JFrame vererbt man in der Regel nicht, sondern fügt lieber ein Panel zu einem normalen Frame. setVisible() macht man möglichst nicht über den Konstruktor sondern von außerhalb, weil man ansonsten das Frame nirgends wiederverwenden kann, usw. Geh einfach mal die einzelnen Schritte des Dokuments durch.

Ebenius
 

Developer_X

Top Contributor
so das ist das konzept, prinzipiell, und wenn ich auf den button drücke verschwindet er, wieso?
Code:
 public Main_1() 
  {	  	  
      super("Test"); 
      
      Toolkit tk = Toolkit.getDefaultToolkit();
      final Dimension d = tk.getScreenSize();
		 
      setUndecorated(true); 
      setSize(900,900); 
      setVisible(true); 
      
  	 JButton b = new JButton("X"); b.setForeground(Color.red);b.setBackground(Color.black);
  	 b.setBounds(d.width-50,0,50,50); 
  	 b.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent evt) {b1ActionPerformed(evt);}private void b1ActionPerformed(ActionEvent evt) {setExtendedState(JFrame.ICONIFIED); }});
  	 add(b);
  	 

  	 
    
  }
WOzu ich den platzt lasse müsst ihr nciht wissen, ich machs einfach ok ?
Also der Button ist verschwunden, nachdem man einmal den BUtton angeklickt hat, das Fenster verkleinert wird, und man dann das Fenster wieder vergrößert. Wieso, was mache ich falsch?
 
S

SlaterB

Gast
JFrame vererbt man in der Regel nicht, sondern fügt lieber ein Panel zu einem normalen Frame.
ui, eine kühne Vorstellung, das wird schwer durchzusetzen,
google-Ergebnisse zu 'extends JFrame': 185.000
(hmm, wenn ich von google kopiere wirds auch fettgeschrieben,
na soll das Forum von mir aus leiden, wenn es es so haben will..)

über Sinn und Zweck will ich dabei gar nicht diskutieren, unter den ersten Links ist auch schon was dazu:
MyGUI extends JFrame - good or bad? (OO, Patterns, UML and Refactoring forum at JavaRanch)
 
S

SlaterB

Gast
@Developer_X

bei mir ist der Button gar nicht zu sehen,
setVisible(true) erst am Ende ausführen, dann wird das Layout durchgerechnet
 

Ebenius

Top Contributor
ui, eine kühne Vorstellung, das wird schwer durchzusetzen,
google-Ergebnisse zu 'extends JFrame'
Dann ändere ich meine Aussage zu: Man ist besser beraten, in diesem Fall nicht von JFrame zu erben. Wenn man später den selben Inhalt woanders braucht, ist ein JComponent-Derivat die Eindeutig bessere Wahl. Auch von der Wortbedeutung: Es ergibt mehr Sinn, eine Komponente zu erweitern ("extends") als ein Fenster, wenn es darum geht, den Inhalt des Fensters anzupassen und nicht die Funktionalität eines Fensters.

Aber auch das ist meine Meinung und keine allgemeingültige Weisheit. :)

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tobero JFrame nimmt keinen Key oder Maus inputs Allgemeine Java-Themen 0
FRI3ND JFrame wird nicht angezeigt Allgemeine Java-Themen 3
N JFrame für Minispiele Allgemeine Java-Themen 14
F JFrame fü Eclipse wie? Allgemeine Java-Themen 6
4 Swing JFrame BackgroundColor Allgemeine Java-Themen 3
RalleYTN Merkwürdiger Fehler mit JFrame im Vollbild Allgemeine Java-Themen 4
snipesss Visueller Countdown in JFrame Allgemeine Java-Themen 1
K Swing OpenStreetMap in JFrame einfügen Allgemeine Java-Themen 1
K Best Practice JFrame Objekt allgemein zugänglich machen Allgemeine Java-Themen 8
S JFrame Variable mitgeben Allgemeine Java-Themen 5
F JFrame übergeben Allgemeine Java-Themen 5
B JFrame Text Ausgabe Allgemeine Java-Themen 7
T JFrame Overlay Allgemeine Java-Themen 1
I JPanel soll sich dem JFrame anpassen Allgemeine Java-Themen 1
I JFrame vor schliessen, methode auführen Allgemeine Java-Themen 2
I JFrame Icon in Main übergeben Allgemeine Java-Themen 1
? AWT Translucent JFrame mit repaint Allgemeine Java-Themen 4
S OOP JFrame als Observer eines JPanel Allgemeine Java-Themen 3
X Modalität von JDialog nachträglich in JFrame implementieren? Allgemeine Java-Themen 8
P Ableitungsfehler JFrame Allgemeine Java-Themen 5
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
S JFrame an Fenstergröße anpassen Allgemeine Java-Themen 16
G JPanel in JFrame Allgemeine Java-Themen 9
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
E Grafiken auf dem JFrame Allgemeine Java-Themen 5
D Bilder in JFrame anzeigen Allgemeine Java-Themen 5
X Kann JLabel in JFrame nicht aktualisieren Allgemeine Java-Themen 3
J pack() lässt JFrame grau Allgemeine Java-Themen 3
J JFrame / PopUp-Menü bearbeiten Allgemeine Java-Themen 2
M JFrame absolut im Vordergrund Allgemeine Java-Themen 2
D JFrame nur in eine Richtung resizen Allgemeine Java-Themen 6
X JFrame sichtbar bei einem gesperrten Computer Allgemeine Java-Themen 11
U Zeichnen mit JFrame. Allgemeine Java-Themen 5
P JPanel - JFrame Allgemeine Java-Themen 6
N JFrame Icon selbst erzeugen Allgemeine Java-Themen 2
T applet und JFrame Allgemeine Java-Themen 12
T abspeichern und laden von objekten in JFrame Allgemeine Java-Themen 2
D Problem mit Tooltips und JFrame (Tooltips sind zu kurz!) Allgemeine Java-Themen 4
Z Uralt-Applet in JFrame Anwendung konvertieren Allgemeine Java-Themen 12
F JFrame zeigt Hintergrund und nicht den Inhalt Allgemeine Java-Themen 12
G Bilder einer Webcam im JFrame anzeigen Allgemeine Java-Themen 5
D Von Thread auf JFrame zugreiffen? Allgemeine Java-Themen 5
M JFrame anpassen Allgemeine Java-Themen 4
M Neues JPanel in JFrame einbinden Allgemeine Java-Themen 6
W Das schließen des JFrame abfangen, wiei? Allgemeine Java-Themen 6
M PDF auf JFrame Allgemeine Java-Themen 10
D JFrame vergrößert nicht auf die gewünschte Größe Allgemeine Java-Themen 2
MQue JFrame nur einmal öffnen Allgemeine Java-Themen 3
MQue Fokus von Komponenten/JFrame Allgemeine Java-Themen 3
MQue JFrame bleibt hängen Allgemeine Java-Themen 3
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P JPanel in JFrame Allgemeine Java-Themen 2
T Sound in JFrame: Ich krichs nich hin =( Allgemeine Java-Themen 7
E 2 Images auf einem JFrame Allgemeine Java-Themen 8
TheJavaKid Component in der Titelleiste vom JFrame? Allgemeine Java-Themen 18
G Word-Dokument in einem JFrame Allgemeine Java-Themen 2
T Servlet und JFrame Allgemeine Java-Themen 2
S JFrame mit Wartezeit Allgemeine Java-Themen 12
thE_29 Java App/JFrame Bildschirm "sperren" Allgemeine Java-Themen 10
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
T JFrame in Statusleiste minimieren Allgemeine Java-Themen 4
D JFrame nicht per Hand schreiben Allgemeine Java-Themen 5
G wie Klasse in JFrame "einfügen" Allgemeine Java-Themen 12
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
S visible prob mit JFrame und JDialog Allgemeine Java-Themen 4
A JFrame-Liste Allgemeine Java-Themen 4
J JFrame Problem beim schließen Allgemeine Java-Themen 2
R java.awt.Component.setCursor() fehlt bei der JFrame doc Allgemeine Java-Themen 2
C Bilder verkleinern und zusammenführen Allgemeine Java-Themen 5
C Tool zum verkleinern der Jars? Allgemeine Java-Themen 23
ARadauer Bild verkleinern. Allgemeine Java-Themen 9
N Hochgeladenes Bild verkleinern und speichern Allgemeine Java-Themen 2
M bild verkleinern Allgemeine Java-Themen 9
S jpg-file: verkleinern und speichern Allgemeine Java-Themen 5
N Text verkleinern/komprimieren Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben