2017-02-11 10 views
0

나는 Head First in Java를 읽었으며 수직으로 항목이 올바르게 표시되지 않는 이유를 알 수 없다. 코드는GUI & BorderLayout

import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.Font; 

import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 
import javax.swing.ScrollPaneConstants; 

public class QuizCardBuilder { 

    private JTextArea question; 
    private JTextArea answer; 
    private JFrame frame; 

public static void main(String[] args) { 
    QuizCardBuilder card = new QuizCardBuilder(); 
    card.go(); 
} 

public void go(){ 
    frame = new JFrame("Quiz Card Builder"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panel =new JPanel(); 


    question = new JTextArea(10,20); 
    question.setLineWrap(true); 
    question.setWrapStyleWord(true); 
    question.setFont(new Font("Serif", Font.ITALIC, 16)); 

    JScrollPane scrollPane = new JScrollPane(question); 
    scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 

    answer = new JTextArea(10,20); 
    answer.setLineWrap(true); 
    answer.setWrapStyleWord(true); 
    answer.setFont(new Font("Calibri", Font.BOLD, 21)); 

    JScrollPane qScroll = new JScrollPane(answer); 
    qScroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    qScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 

    JButton nextBtn = new JButton("Next Card"); 

    JLabel qLabel = new JLabel("Question:"); 
    JLabel aLabel = new JLabel("Answer:"); 

    panel.add(qLabel); 
    panel.add(scrollPane); 
    panel.add(aLabel); 
    panel.add(qScroll); 
    panel.add(nextBtn); 

    JMenuBar menuBar=new JMenuBar(); 
    JMenu fileMenu = new JMenu("File"); 
    JMenuItem newMenuItem = new JMenuItem("New"); 
    JMenuItem saveMenuItem = new JMenuItem("Save"); 

    fileMenu.add(newMenuItem); 
    fileMenu.add(saveMenuItem); 
    menuBar.add(fileMenu); 
    frame.setJMenuBar(menuBar); 
    frame.getContentPane().add(panel, BorderLayout.CENTER); 
    frame.setSize(500, 600); 
    frame.setVisible(true); 

} 
} 

GridLayout을 사용해야합니까? 내가 이해하지 못하는 다른 문제가 있습니까?

+1

당신은 퍼팅의 모든 구성 요소 가로 방향으로 정렬하는 기본 'FlowLayout'이있는 패널입니다. – user1803551

답변

2

당신은 구성 요소가 수직으로 정렬 할 수 있도록하는 BoxLayoutpanel의 레이아웃을 설정할 수 있습니다 :

"제대로 항목을 표시하지 않는 이유 * 세로 *"
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
+0

고맙습니다. 당신이 올바른지. –

+1

문제 해결에 도움이 되었다면 [답변에 동의하십시오] (http://meta.stackexchange.com/a/5235/155831)를 입력하십시오. –

+0

@ Θανάσης 환영합니다. 문제가 해결되면 답변을 수락하십시오. – badjr