2011-03-25 103 views
1

我嘗試更改面板的佈局,但存在問題,因爲當我更改佈局時,組件仍保留在面板上,並且有很多行李。如何創建滑動面板

import java.awt.LayoutManager; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class LayoutTest extends JFrame { 
public LayoutTest() { 
    initComponents(); 
} 

private void initComponents() { 

    jPanel1 = new javax.swing.JPanel(); 
    jButton = new JButton(); 

    jPanel1.setBackground(new java.awt.Color(204, 204, 255)); 
    jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); 

    jButton.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 
      LayoutManager tempGroupLayout = jPanel1.getLayout(); 
      jPanel1.setLayout(layoutManager2); 
      jPanel1.getParent().validate(); 
      layoutManager = layoutManager2; 
      layoutManager2 = tempGroupLayout; 
     } 
    }); 

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
    jPanel1.setLayout(jPanel1Layout); 
    jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING). 
      addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup(). 
      addContainerGap(286, Short.MAX_VALUE). 
      addComponent(jButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); 
    jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING). 
      addComponent(jButton, javax.swing.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE)); 
    layoutManager = jPanel1Layout; 

    javax.swing.GroupLayout jPanel1Layout2 = new javax.swing.GroupLayout(jPanel1); 
    jPanel1Layout2.setHorizontalGroup(
      jPanel1Layout2.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING). 
      addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout2.createSequentialGroup(). 
      addComponent(jButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))); 
    jPanel1Layout2.setVerticalGroup(
      jPanel1Layout2.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING). 
      addComponent(jButton, javax.swing.GroupLayout.DEFAULT_SIZE, 442, Short.MAX_VALUE)); 
    layoutManager2 = jPanel1Layout2; 
    getContentPane().add(jPanel1); 
    pack(); 
} 

public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 

     public void run() { 
      new LayoutTest().setVisible(true); 
     } 
    }); 
} 
private JButton jButton; 
private JPanel jPanel1; 
private LayoutManager layoutManager; 
private LayoutManager layoutManager2; 

}

回答

1

看一看調整JSplitPane組件。你可以嵌套其中的一些。

splitPane.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, new SplitPanePropertyChangeListener()); 

private class SplitPanePropertyChangeListener implements PropertyChangeListener {  
    public void propertyChange(java.beans.PropertyChangeEvent evt) {  
     int nv = ((Integer) evt.getNewValue()).intValue();  
     if (nv == 1) { //adjust this depending on your divider location  
     setSize(new Dimension(800, 560));  
     }  
     if (nv == 221) { //adjust this depending on your divider location  
     setSize(new Dimension(1000, 560));  
     }  
    }  
} 

請與上面的代碼,並改造它爲您的要求

+0

我聽說過調整JSplitPane用於此目的,但我不'噸找到如何使這一點。可能你會提出一些想法。 – itun 2011-03-25 06:48:17

+0

如何更改打開/關閉按鈕的視圖和位置。 – itun 2011-03-25 08:08:17