我有一个问题:我想创建一个小游戏,我必须创建一个如下窗口:
当我尝试更改" 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 () ;
}
}
答案 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
扩展,然后将其添加到您要使用的任何容器中