【问题标题】:GUI & BorderLayoutGUI & BorderLayout
【发布时间】:2017-06-30 02:04:38
【问题描述】:

我阅读了 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吗?还有其他问题,我不明白?

【问题讨论】:

  • "为什么它们没有正确显示项目,垂直" 您将所有组件放在一个默认FlowLayout 的面板中,使它们水平对齐。跨度>

标签: java swing layout-manager border-layout


【解决方案1】:

您可以将panel 的布局设置为BoxLayout,允许组件垂直对齐:

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

【讨论】:

  • 如果它有助于解决问题,请accept the answer
  • @Θανάσης 不客气。如果您的问题已解决,请接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2013-06-20
  • 2013-06-06
  • 2012-07-24
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多