2012-05-10 5 views
3

Нажав кнопку «Добавить Int Frame», я нарисую JInternalFrame на tabbedPane, в правой части этой разделенной JSplitPane разделенной HORIZONTAL.Вложенная JSplitPane на JInternal Frame

enter image description here

На этой InternalFrame я могу добавить вложенной Панель с, нажав на кнопку "Добавить Split Pane".

Вложенные JSplitPanes появляются только в том случае, если я перемещаю InternalFrame: как показать JSplitPanes сразу же, когда кнопка нажата?

Вот мой код

public class MultiSplit extends javax.swing.JFrame { 

JInternalFrame jif; 
JSplitPane jsp1,jsp2,jsp3,jsp4,jsp5, jsp6; 
JTextArea textArea1, textArea2, textArea3, textArea4, textArea5, textArea6; 
int click = 0; 

public MultiSplit() { 
    initComponents(); 
    setLocationRelativeTo(null); 
} 

private void AddIntFramesMousePressed(java.awt.event.MouseEvent evt) {          
    click = 0;   
    jif = new JInternalFrame(); 
    jPanel1.add(jif); 
    jif.setSize(750, 600); 
    jif.setResizable(true); 
    jif.setClosable(true); 
    jif.setMaximizable(true); 
    jif.setIconifiable(true); 
    jif.setVisible(true); 
}     

private void AddPanesButtonMousePressed(java.awt.event.MouseEvent evt) {            
    click++;  
    if(click ==1){ 
    textArea1 = new JTextArea(); 
    textArea2 = new JTextArea(); 

    jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, textArea1, textArea2); 
    jsp1.setVisible(true);  
    jsp1.setResizeWeight(0.75); 
    jsp1.setDividerSize(2); 
    jif.add(jsp1); 
    }   
    else if(click==2){ 
     textArea3 = new JTextArea(); 
     jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jsp1, textArea3); 
     jsp2.setVisible(true); 
     jsp2.setResizeWeight(0.80); 
     jsp2.setDividerSize(2); 
     jif.add(jsp2); 
    }   
    else if(click==3){ 
     textArea4 = new JTextArea(); 
     jsp3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, jsp2, textArea4); 
     jsp3.setVisible(true); 
     jsp3.setResizeWeight(0.85); 
     jsp3.setDividerSize(2); 
     jif.add(jsp3); 
    } 
    } 
    public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      new MultiSplit().setVisible(true); 
     } 
    }); 
    } 
} 

JSplitPanes plotted

+0

Пожалуйста, отредактируйте свой вопрос, чтобы включить [sscce] (http://sscce.org/), который демонстрирует проблему, которую вы описываете. – trashgod

ответ

3

How to Use Internal Frames: "Обычно вы добавляете внутренние фреймы на рабочую панель." Будь ваш JInternalFrame находится на JDesktopPane или нет, вам все равно необходимо установить pack() внутренний фрейм, как и обложка Window.

+0

Здесь есть пример [здесь] (http://stackoverflow.com/a/7220544/230513). – trashgod

+1

Спасибо, trashgod, он работает! Я пропустил пакет(); –