2017-02-11 52 views
0

我在Java中阅读了Head First这本书,但我无法弄清楚为什么它们没有正确显示这些项目,垂直。代码是,图形用户界面和边框布局

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

你可以的panel布局设置为BoxLayout,使组件垂直对齐:

panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
+0

谢谢。你是对的。 –

+1

如果帮助解决问题,请[接受答案](http://meta.stackexchange.com/a/5235/155831)。 –

+0

@Θανάσης不客气。如果您的问题已解决,请接受答案。 – badjr