Java Swing GUI对齐问题

时间:2011-03-04 07:42:27

标签: java user-interface swing

问候,

我正在快速学习Java,但是我真正能够克服的是Java GUI编程。来自C#的简单生活,这是让我的UI工作的完全挑战。我知道绝对布局不在这里。

我面临以下问题。

在我的内容窗格(BorderLayout)中,我有一个带有JTable的JScrollPanel和一个位于应用程序顶部的菜单。

问题是,我想在边框布局的南边添加一个组件(JScrollPane附加到中心),我想向它添加一个可滚动的JTextArea。

我的想法是,添加一个新的JPanel,给它一个布局(不知道在这种情况下哪个是最好的...建议是受欢迎的)将JScrollpanel添加到该面板并在其上添加一个JTextArea。我已经尝试了这个并且图形明智,它有效。然而,由于它可能被编程为笨拙,因此JTextArea的高度非常大,就像JTextField一样。

我希望ATLEAST 4行高且可滚动。这是我的GUI代码:

setTitle("Game Manager");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 620, 498);


    JMenuBar mbMainMenu = new JMenuBar();
    setJMenuBar(mbMainMenu);

    JMenu mnFile = new JMenu("File");
    mbMainMenu.add(mnFile);
    contentPane = new JPanel();
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);

    JScrollPane scrollPane = new JScrollPane();
    contentPane.add(scrollPane, BorderLayout.CENTER);

    tblGames = new JTable(new GamesTableModel(mainController.retrieveGames()));
    tblGames.setShowVerticalLines(true);
    tblGames.setShowHorizontalLines(true);
    tblGames.setPreferredScrollableViewportSize(new Dimension(500, 70));
    tblGames.setFillsViewportHeight(true);
    tblGames.setAutoCreateRowSorter(true);
    tblGames.getTableHeader().setReorderingAllowed(false);
    scrollPane.setViewportView(tblGames);

所以在JTable下面,我希望在一个JScrollPane中有一个JtextArea,它超过一行高。

我完全失去了对此的修复。

欢迎任何提示,不仅仅是关于gui本身,还有关于命名约定。

这个项目只是为了自学,因为我们学校想要教C#而不是Java。 Java对我来说感觉更自然然后是C#..在我看来,它更好地打字......足够关于涉猎。

请留下您的意见/提示/回答^^

非常感谢您的帮助!

解决

溶液:

    JScrollPane gameDescriptionScrollPane = new JScrollPane();
contentPane.add(gameDescriptionScrollPane, BorderLayout.SOUTH);

taGameDescription = new JTextArea();
taGameDescription.setRows(4);

谢谢:mklhmnn

每日课程:仔细阅读文档,而不仅仅是关注它并认为你已经阅读过了!

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 使用首选列或行计数或
  • 创建JTextArea
  • 设置周围JScrollPane
  • 的最小和首选大小