我正在快速學習Java,但是我可以真正打破我的腿是Java GUI編程。來自C#的簡單生活,這是讓我的UI工作的完整挑戰。我知道絕對佈局在這裏不成問題。
我正面臨以下問題。
在我的內容窗格(BorderLayout)中,我有一個帶有JTable的JScrollPanel和一個位於應用程序頂部的菜單。
問題是,我想添加一個組件到邊界佈局的南部(JScrollPane被連接到中心),並且我想向它添加一個可滾動的JTextArea。
我的工作是,添加一個新的JPanel,給它一個佈局(不知道哪一個是最好的在這種情況下..建議是受歡迎的)添加一個JScrollpanel到該面板和ontop添加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
課的一天:仔細閱讀文檔,不只是眼睛過它,並認爲你已閱讀!
最小和首選大小的首選列或行數或
我剛剛成功地嘗試了你的建議。我認爲我的思想過於固執,從C#開始,gui的建設非常困難,但它的設計非常簡單。非常感謝你。 – 2011-03-04 08:15:36
如果你把'JTextArea'放在'BorderLayout'的南部位置,它不會調整大小 - 只有中心組件調整大小。如果用戶應該能夠調整大小,您必須使用不同的佈局管理器或「JSplitPane」。 – Mot 2011-03-04 14:24:38