2017-01-26 1 views
0
public static void main(String[] args) {  
    JFrame frame = new JFrame("Fantasy Football Toolkit"); 
    frame.setContentPane(new GUI().mainPanel); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(350, 475); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
} 

上記は私のGUIアプリケーションの主な方法です。このメインメソッドを実行した後にフォームのサイズを変更できるかどうかは疑問です。ボタンをクリックしたときにサイズを変更したいのですが?問題は、フレームにアクセスできないことです。これは一方的にも可能でもなければならない。私は解決策を探し求めましたが、見つけられませんでした。ありがとう。Java GUI作成後のフォームのサイズ変更

+0

'JFrame'をクラスメンバーとして宣言する必要があります。また、[Event Dispatch Thread(EDT)](https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html)にプログラムを置いて、 'main'メソッドですべてを作らないようにしてください。 – Frakcool

答えて

2

常に、トップレベルのJFrameには、保持するコンポーネントのうち、SwingUtilities.getWindowAncestor(yourComponent)からアクセスできます。このメソッドはWindowオブジェクトを返しますが、もしそれがJFrameであることを100%確信しているなら、いつでもキャストすることができます。

入手した後はいつでもpack()と呼んで、含まれているコンポーネントの推奨サイズにサイズを変更できます。一般的には、プログラムを修正するときに後でバグが発生する可能性があるため、サイズを直接設定しないでください。

+0

SwingUtilitiesメソッドを使用すると、私は.packを呼び出し、nullpointerexceptionを取得します – nbreunig3

+0

@ NBreunig3:間違ったタイミングで実行する可能性があります。これは** GUIがレンダリングされた後**動作します。 –

+0

ええ、私はエラーを解決しました。ご協力いただきありがとうございます! – nbreunig3

関連する問題