【问题标题】:Java Swing GUI alignment problemJava Swing GUI对齐问题
【发布时间】:2011-07-08 15:24:57
【问题描述】:

您好,

我对 Java 的学习速度很快,但真正让我大吃一惊的是 Java GUI 编程。来自 C# 的轻松生活,这是让我的 UI 正常工作的完整挑战。我知道绝对布局在这里是不可能的。

我面临以下问题。

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

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

我的想法是,添加一个新的 JPanel,给它一个布局(不知道在这种情况下哪个是最好的.. 欢迎提出建议)向该面板添加一个 JScrollpanel,然后在该面板上添加一个 JTextArea。我已经尝试过这个并且在图形上很明智,它奏效了。然而,尽管编程可能很笨拙,但 JTextArea 的高度仅足够大,就像 JTextField 一样。

我希望它至少 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# 更自然。在我看来,它的类型更好。涉猎已经足够了。

请留下你的cmets/tips/answer ^^

非常感谢您的帮助!

已解决

解决方案:

    JScrollPane gameDescriptionScrollPane = new JScrollPane();
contentPane.add(gameDescriptionScrollPane, BorderLayout.SOUTH);
    
taGameDescription = new JTextArea();
taGameDescription.setRows(4);

谢谢:mklhmnn

今天的一课:仔细阅读文档,而不是仅仅盯着它就认为你已经阅读了它!

【问题讨论】:

    标签: java user-interface swing


    【解决方案1】:

    你有两个选择:

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

    【讨论】:

    • 听起来很合乎逻辑.. 但是我很害怕,如果我最大化应用程序,它不会正确伸展。是这样吗?以及我没有正确阅读有关 JTextArea 及其属性的文档的借口。我现在会尝试这两种选择。看看什么有效。谢谢:)
    • 我刚刚成功地尝试了您的建议。我认为我的思想太固定了,来自 C# 的 gui 构建要困难得多,但它却出奇地容易。非常感谢。
    • 如果您将JTextArea 放在BorderLayout 的南侧位置,它将不会调整大小 - 只有中心组件会调整大小。如果用户应该能够调整大小,您必须使用不同的布局管理器或 JSplitPane
    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 2019-08-25
    • 2021-11-20
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多