【发布时间】: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