0
私は問題を抱えている:私は小さなゲームを作成したい、私は次のようなウィンドウを行う必要があります。JavaでsetPreferredSizeを使用するにはどうすればよいですか?
私は「言葉で楽しい」のフォントサイズを変更しようとしたときに、それを変更されていません...
どうすればよいですか?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JComponent;
public class GameWords extends JFrame
{
private static int W = 800 ;
private static int H = 600 ;
public GameWords()
{
setTitle (" Word Order Game ") ;
setSize (H , W) ;
setLayout (new FlowLayout()) ;
setDefaultCloseOperation (EXIT_ON_CLOSE) ;
createContent() ;
setVisible (true) ;
}
public void createContent()
{
JLabel heading = new JLabel (" Fun With Words ") ;
heading.setFont (heading.getFont().deriveFont (26f));
heading.setPreferredSize (new Dimension (H , 4 * W)) ;
JLabel h1 = new JLabel (" Hey Kids! Want to prictice your typing and word-ordering Skills ? \n") ;
add (heading) ;
add (h1) ;
}
public static void main(String[] args)
{
new GameWords() ;
}
}
これはうまくいきました。しかし、パックを使用すると、なぜ動作するのか教えてください。私の医者が私に助けてくれてありがとう^^^ –
JFrameでpack()を呼び出すと、JFrameは子供たちに(再帰的に)好みのサイズを尋ね、FlowLayoutを指定しているので、JFrameは子どもを好みの大きさで左から右に出す。しかし、@MadProgrammerのアドバイスに耳を傾け、そのメソッドの1つをオーバーライドしない限り、JFrameからサブクラス化しないでください。 JPanelをサブクラス化する必要はありません。なぜなら、JPanelには機能を追加していないからです。 JLabelを含むJPanelを作成し、JFrameを作成してそれにパネルを追加するだけです。 – FredK
@Mj ___ 3フレッドが言っているように、 'pack'はコンテンツの好みのサイズに基づいて、コンテンツの周りにフレームを「パック」します。この情報は、使用されたさまざまなレイアウトマネージャによって計算されます – MadProgrammer