2017-03-14 5 views
0

나는 문제가있다 : 나는 작은 게임을 만들려면, 나는 다음과 같은 창을 확인해야합니다 :어떻게 Java에서 setPreferredSize를 사용할 수 있습니까?

enter image description here

나는 "단어와 재미"의 글꼴 크기를 변경하려 할 때,을 변경되지 않았습니다 ...

어떻게해야합니까?

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

짧은 대답은 아닙니다. API는 원하는 크기를 스스로 계산할 수 있습니다.

더 이상 답변

setSize를 사용하지 않는 일반적인 권장 사항으로 창

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


} 

의 크기를 계산하는 용기를 선호하는 크기를 사용하는 대신 pack를 사용하고, 직접 확장 안 JFrame에서 새 기능을 클래스에 추가하지 않고 단일 유스 케이스로 스스로를 잠그고 있습니다. 일반적인 권장 사항으로, JPanel에서 시작하여 사용하려는 컨테이너에이 내용을 추가해야합니다.

+0

현재 작동 중입니다.하지만 팩을 사용할 때 작동하는 이유를 알려주시겠습니까? 의사가 잘 물어 줘서 고마워.^_^ –

+0

JFrame에서 pack()을 호출하면 JFrame이 자녀에게 (재귀 적으로) 원하는 크기가 무엇인지 물어보고 FlowLayout을 지정하기 때문에 JFrame은 아이들을 선호하는 크기로 왼쪽에서 오른쪽으로 그러나 @MadProgrammer의 조언에주의를 기울여야하며 JFrame의 메소드 중 하나를 재정의하지 않는 한 JFrame에서 서브 클래스하지 않아야합니다. 귀하의 경우 JPanel을 하위 클래스화할 필요가 없습니다. JPanel에 기능을 추가하지 않기 때문입니다. JLabel이 포함 된 JPanel을 만든 다음 JFrame을 만들어 패널을 추가합니다. – FredK

+0

@Mj ___ 3 fred가 말했듯이, 'pack'은 내용의 기본 크기에 따라 내용을 프레임에 "포장"합니다. 이 정보는 사용 된 다양한 레이아웃 관리자에 의해 계산됩니다. – MadProgrammer