我怎样才能在java中使用setPreferredSize?

时间:2017-03-14 20:02:04

标签: java swing main

我有一个问题:我想创建一个小游戏,我必须创建一个如下窗口:

enter image description here

当我尝试更改" Fun With Words"的字体大小时,它没有改变......

我该怎么办?

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

    }

}

1 个答案:

答案 0 :(得分:1)

简短的回答是,API无法自行计算所需的大小。

答案越长,请勿使用setSize,而是使用pack,而使用容器首选大小来计算窗口大小

public GameWords ()
{
     setTitle ( " Word Order Game " ) ;
     setLayout ( new FlowLayout() ) ;
     setDefaultCloseOperation ( EXIT_ON_CLOSE ) ;
     createContent () ;
     pack();
     setVisible ( true ) ;
}

public void createContent ()
{
    JLabel heading = new JLabel (" Fun With Words ") ;
    heading.setFont ( heading.getFont().deriveFont ( 26f ) );
    JLabel h1 = new JLabel ( " Hey Kids! Want to prictice your typing and word-ordering Skills ? \n" ) ;
    add ( heading ) ;
    add ( h1 ) ;


}

作为一般性建议,您不应直接从JFrame扩展,您不会在课程中添加任何新功能,而是将自己锁定在一个用例中。作为一般建议,您应首先从JPanel扩展,然后将其添加到您要使用的任何容器中