2013-06-04 50 views
0

我想讓我的JTextArea顯示在llpPanel的所有其他內容下。我的代碼如下,顯示我的代碼的屏幕截圖。在代碼中,您會看到我已將JTextArea的尺寸設置爲(50,50)。然後在llpPanel中添加了BorderLayout.PAGE_END。我也試着(而不是PAGE_END)放置CENTER和SOUTH。當我把南方,它在節目的最底部顯示一條白線,但你不能做任何事情。添加一個JTextArea到TabbedPane

enter image description here

import java.awt.BorderLayout; 
    import java.awt.ComponentOrientation; 
    import java.awt.GridLayout; 
    import java.awt.event.ActionEvent; 
    import java.awt.event.ActionListener; 

    import javax.swing.ButtonGroup; 
    import javax.swing.JButton; 
    import javax.swing.JCheckBox; 
    import javax.swing.JComboBox; 
    import javax.swing.JDialog; 
    import javax.swing.JLabel; 
    import javax.swing.JPanel; 
    import javax.swing.JFrame; 
    import javax.swing.JRadioButton; 
    import javax.swing.JTabbedPane; 
    import javax.swing.JTextArea; 
    import javax.swing.JTextField; 


    public class TestApplication implements ActionListener { 

     public static void main(String[] args) { 
     final JFrame frame = new JFrame(); 
     frame.setSize(1000, 1000); 
     frame.setTitle("RBA Test Application"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
     JButton initialize = new JButton("Initialize");   
      JButton connect = new JButton("Connect"); 
     JButton disconnect = new JButton("Disconnect"); 
     JButton shutdown = new JButton("Shut Down"); 
     JButton portsettings = new JButton("Port Settings");  
     JButton online = new JButton("Go Online");  
     JButton offline = new JButton("Go Offline");   
     JButton status = new JButton("Status"); 
     JButton reboot = new JButton("Reboot");  
     JButton account = new JButton("Account"); 
     JButton amount = new JButton("Amount"); 
     JButton reset = new JButton("Reset"); 
     JButton approvordecl = new JButton("Approve/Decline"); 

JTextArea logbox = new JTextArea(50, 50); 

     JPanel testPanel = new JPanel(); 
     testPanel.add(button); 
     testPanel.add(button2); 
     testPanel.add(checkbox2); 

     JPanel posPanel = new JPanel(); 
     posPanel.add(test); 
     posPanel.add(testing); 
     posPanel.add(checkbox); 

     JPanel llpPanel = new JPanel(); 
     llpPanel.add(online); 
     llpPanel.add(offline); 
     llpPanel.add(status); 
     llpPanel.add(reboot); 
     llpPanel.add(account); 
     llpPanel.add(amount); 
     llpPanel.add(reset); 
     llpPanel.add(approvordecl); 
     llpPanel.add(logbox, BorderLayout.PAGE_END); 

      JPanel buttonPanel = new JPanel(); 
     buttonPanel.add(initialize); 
     buttonPanel.add(connect); 
     buttonPanel.add(disconnect); 
     buttonPanel.add(shutdown); 
     buttonPanel.add(portsettings); 
     frame.add(buttonPanel); 
     frame.add(buttonPanel, BorderLayout.NORTH); 

     JTabbedPane tabbedPane = new JTabbedPane(); 
     tabbedPane.addTab("LLP", null, llpPanel, "Low Level Protocol"); 
       tabbedPane.addTab("POS",null, posPanel, "Point Of Sale"); 
     tabbedPane.addTab("Test", null, testPanel, "Test"); 

     JPanel tabsPanel = new JPanel(new BorderLayout()); 
     tabsPanel.add(tabbedPane); 
     frame.add(tabsPanel, BorderLayout.CENTER); 

     frame.pack(); 
    } 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     // TODO Auto-generated method stub  
    } 
    } 

更新代碼的截圖低於...

import java.awt.BorderLayout; 
import java.awt.ComponentOrientation; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.ButtonGroup; 
import javax.swing.JButton; 
import javax.swing.JCheckBox; 
import javax.swing.JComboBox; 
import javax.swing.JDialog; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JFrame; 
import javax.swing.JRadioButton; 
import javax.swing.JTabbedPane; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 


public class TestApplication implements ActionListener { 

    public static void main(String[] args) { 
    final JFrame frame = new JFrame(); 
    frame.setSize(1000, 1000); 
    frame.setTitle("RBA Test Application"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 



    JTextArea logbox = new JTextArea(50, 50); 




    JButton initialize = new JButton("Initialize"); 

    JButton connect = new JButton("Connect"); 

    JButton disconnect = new JButton("Disconnect"); 

    JButton shutdown = new JButton("Shut Down"); 


    JButton portsettings = new JButton("Port Settings"); 


    JButton online = new JButton("Go Online"); 

    JButton offline = new JButton("Go Offline"); 

    JButton status = new JButton("Status"); 

    JButton reboot = new JButton("Reboot"); 


    JButton account = new JButton("Account"); 


    JButton amount = new JButton("Amount"); 


    JButton reset = new JButton("Reset"); 


    JButton approvordecl = new JButton("Approve/Decline"); 

    JButton test = new JButton("Test Button #1"); 

    JButton testing = new JButton("Test Button #2"); 

    JRadioButton button = new JRadioButton("Radio Button"); 

    JRadioButton button2 = new JRadioButton("Radio Button"); 

    JCheckBox checkbox = new JCheckBox("Check Box"); 

    JCheckBox checkbox2 = new JCheckBox("Check Box"); 


    JPanel newButtonPanel = new JPanel(); 
    newButtonPanel.add(online); 
    newButtonPanel.add(offline); 
    newButtonPanel.add(status); 
    newButtonPanel.add(reboot); 
    newButtonPanel.add(account); 
    newButtonPanel.add(amount); 
    newButtonPanel.add(reset); 
    newButtonPanel.add(approvordecl); 


    JPanel testPanel = new JPanel(); 
    testPanel.add(button); 
    testPanel.add(button2); 
    testPanel.add(checkbox2); 

    JPanel posPanel = new JPanel(); 
    posPanel.add(test); 
    posPanel.add(testing); 
    posPanel.add(checkbox); 

    JPanel llpPanel = new JPanel(); 
    llpPanel.setLayout(new BorderLayout()); 
    llpPanel.add(newButtonPanel); 
    llpPanel.add(logbox, BorderLayout.PAGE_END); 

    JPanel buttonPanel = new JPanel(); 
    buttonPanel.add(initialize); 
    buttonPanel.add(connect); 
    buttonPanel.add(disconnect); 
    buttonPanel.add(shutdown); 
    buttonPanel.add(portsettings); 
    frame.add(buttonPanel); 
    frame.add(buttonPanel, BorderLayout.NORTH); 

    JTabbedPane tabbedPane = new JTabbedPane(); 
    tabbedPane.addTab("LLP", null, llpPanel, "Low Level Protocol"); 
    tabbedPane.addTab("POS",null, posPanel, "Point Of Sale"); 
    tabbedPane.addTab("Test", null, testPanel, "Test"); 

    JPanel tabsPanel = new JPanel(new BorderLayout()); 
    tabsPanel.add(tabbedPane); 
    frame.add(tabsPanel, BorderLayout.CENTER); 


    frame.pack(); 



} 

@Override 
public void actionPerformed(ActionEvent arg0) { 
    // TODO Auto-generated method stub 

} 






} 

screenshot2

+1

我的眼睛正在交叉。你能簡化這個代碼到一個錯誤更明顯的地步嗎? –

+0

是的,90%或更多的代碼與您的問題無關。你也可以更好地解釋你的問題,以便我們更清楚。 –

+0

如果你看看我的代碼顯示的屏幕截圖。按鈕側面的大白色空間,我需要它在按鈕下面。我已經嘗試幾乎所有的borderlayout選項來獲取它的按鈕,但它不會正常工作。 –

回答

2

JPanels使用FlowLayout默認因此應用BorderLayout制約因素,如PAGE_END不會有任何效果。您需要設置面板​​的佈局:

llpPanel.setLayout(new BorderLayout()); 

然後你會遇到自己在BorderLayout.CENTER位置移動部件的問題。解決方法是創建另一個JPanel作爲llpPanel上除logbox以外的組件的容器。

JPanel newButtonPanel = new JPanel(); 
newButtonPanel.add(online); 
... 
llpPanel.add(newButtonPanel); 
JScrollPane scrollPane = new JScrollPane(logbox) { 
    @Override 
    public java.awt.Dimension getPreferredSize() { 
     return new Dimension(500, 500); 
    }; 
}; 
llpPanel.add(scrollPane, BorderLayout.PAGE_END); 

使用JScrollPane,而不是直接添加JTextArea到容器。

+0

好的,當我這樣做時,我的llpPanel上的按鈕消失了。那是因爲我爲JTextArea設定的尺寸? –

+0

您是否已將所有按鈕添加到'newButtonPanel',然後如上所述將它添加到'llpPanel'? – Reimeus

+0

是的,我做了,按鈕被覆蓋。我試着將PAGE_END更改爲CENTER,並且它做了同樣的事情 –

1

設置組件的首選大小屬性而不是其大小,並將其添加到BorderLayout.SOUTH。對於BorderLayout佈局,容器將嘗試使用邊(北,南,東,西)的首選尺寸,並相應調整中心的大小。

一個簡短的例子來說明。該視圖是一個面板,其底部的文本區域高度爲50。這是通過在BorderLayout.SOUTH中添加JTextArea組件並在Dimension(0,50)中設置首選大小屬性來完成的。其餘的視圖充滿了一個小組。此面板放置在BorderLayout.CENTER中,並由佈局管理器調整大小。

JPanel view = new JPanel(); 
view.setSize(800, 600); 
view.setLayout(new BorderLayout()); 

JPanel topArea = new JPanel(); 
JTextArea textArea = new JTextArea(); 
textArea.setPreferredSize(new Dimension(0, 50)); 

view.add(topArea, BorderLayout.CENTER); 
view.add(textArea, BorderLayout.SOUTH); 
+0

好吧我是初學者,請你給我舉個例子 –

+0

好的非常感謝你! –