2017-02-11 12 views
0

私はJavaでHead Firstという本を読んだので、項目が正しく表示されない理由を理解できません。コードは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

関連する問題