Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe ein Frame welches eine Klasse ... extends Panel aufruft.
Mein Frame habe ich eine Größe gegeben.
Ich möchte nun meine Framegröße aus der ... extends Panel Klasse ändern.
Jetzt ändert er aber nur die Panelgröße.
Du suchst mit Component.getParent solange, bis du das Frame gefunden hast (Die Component ohne Parent).
Du kannst auch im Panel das Frame speichern, eine Methode "setFrame" schreiben, und beim konstruieren deiner GUI das Frame übergeben.
? Sieht ja soweit richtig aus... ???:L
Frames haben eine Minimalbreite (und -Höhe), versuch es mal mit grösseren Zahlen.
Überprüf, ob die Methode tatsächlich aufgerufen wird (ActionListener gesetzt?).
2javax.swing.JFrame[frame0,0,0,600x610,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=null,alignmentY=null,border=,flags=385,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
Er ändert.Soviel ist sicher.Ich habe es auch schon mit repaint und/oder validate probiert.
Keine Reaktion.Weist du noch was?
Das Frame ist resizable? ( JFrame.setResizable( true ) )
Überschreibe die Methode reshape( int x, int y, int w, int h); im JFrame, und gib jedesmal die Argumente aus, wenn sie aufgerufen wird. Vielleicht wird das Frame wieder auf eine andere Grösse gesetzt (zugegeben, mehr ein Hoffnungsmacher als was anderes).
//Instanz Panel
csp = new ChatServerPanel(counter ,portadresse);
csp.setBounds(0,0,300,500);
JFrame test = new JFrame();
csp.setFrame( test );
csp.resizeFrame( 300, 310 );
this.getContentPane().add(csp);
validate();
weiss nicht ob du es einfach der einfachheit halber weggelassen hast, aber:
du gibts deinem frisch instanziierten Panel ein null-layout.
dann setzt du eine größe...alles ok bisher.
nun erzeugst du ein JFrame und nun kommt in meinen augen dein fehler.
was machst du mit dem Frame? Du hast es erzeugt aber das wars dann auch.
Wo addest Du das Panel in das Frame?
Ich denke das ist auch der Grund, warum das Frame BorderLayout hat.
Richtig wäre:
Code:
public class myFrame extends JFrame
{
BorderLayout borderLayout = new BorderLayout();
ChatServerPanel csp;
public myFrame(String s_frameTitle)
{
super(s_frameTitle);
try
{
jbInit();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
private void jbInit()
{
this.getContentPane().setLayout(borderLayout);
csp = new ChatServerPanel(counter ,portadresse);
csp.setBounds(0,0,300,500);
csp.setFrame(this);
csp.resizeFrame(300, 310); // oder einfach this.resize
this.getContentPane.add(csp, BorderLayout.CENTER);
}
}