2011-03-04 179 views
0

問候,Java Swing GUI對齊問題

我正在快速學習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

課的一天:仔細閱讀文檔,不只是眼睛過它,並認爲你已閱讀!

回答

1

你有兩個選擇:

  • 創建JTextArea設置的周圍JScrollPane
+0

最小和首選大小的首選列或行數或

  • 聽起來似乎很合乎邏輯的..即時通訊但是,如果我最大化應用程序,它不能正確拉伸。這是怎麼回事?我的藉口是沒有正確閱讀關於JTextArea及其屬性的文檔。我現在會嘗試兩個選項。看看有什麼作用。謝謝:) – 2011-03-04 08:08:56

  • +0

    我剛剛成功地嘗試了你的建議。我認爲我的思想過於固執,從C#開始,gui的建設非常困難,但它的設計非常簡單。非常感謝你。 – 2011-03-04 08:15:36

    +0

    如果你把'JTextArea'放在'BorderLayout'的南部位置,它不會調整大小 - 只有中心組件調整大小。如果用戶應該能夠調整大小,您必須使用不同的佈局管理器或「JSplitPane」。 – Mot 2011-03-04 14:24:38