2013-06-04 3 views
0

Я пытаюсь показать свою JTextArea под другим содержимым llpPanel. Ниже приведен мой код, снимок экрана моего кода. В коде вы увидите, что я установил свои размеры для JTextArea (50, 50). Затем в llpPanel я добавил BorderLayout.PAGE_END. Я также попытался (вместо PAGE_END) установить CENTER и SOUTH. Когда я добавляю 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 в качестве контейнера для компонентов, отличных от logbox, по адресу llpPanel.

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

ok, когда я делаю, что кнопки на моей llpPanel ушли. Это из-за размеров, которые я установил для JTextArea? –

+0

Вы добавили все кнопки в 'newButtonPanel', а затем добавили его в' llpPanel', как указано выше? – Reimeus

+0

Да, я сделал, и кнопки закрыты. Я также попытался изменить PAGE_END на CENTER и сделал то же самое –

1

Задайте свойство предпочтительного размера компонента, а не его размер, и добавьте его в BorderLayout.SOUTH. Для макетов BorderLayout контейнер будет использовать предпочтительные размеры для краев (север, юг, восток и запад) и соответственно изменить размер центра.

Короткий отрывочный пример для иллюстрации. Представление представляет собой панель, которая будет иметь текстовую область внизу, высоту 50. Это делается путем добавления компонента JTextArea в BorderLayout.SOUTH и установки свойства предпочтительного размера в 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

ok Я начинаю, пожалуйста, дайте мне пример –

+0

ОК спасибо большое! –

Смежные вопросы