【问题标题】:How to create a slide panel如何创建滑动面板
【发布时间】:2011-07-22 16:56:42
【问题描述】:

我尝试更改面板的布局,但是有问题,因为当我更改布局时,组件仍保留在面板上并且有很多包。

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;

}

【问题讨论】:

    标签: java swing panel slide


    【解决方案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));    
          }     
       }    
    }
    

    检查上面的代码并根据您的要求对其进行改造

    【讨论】:

    • 我听说过 JSplitPane 用于此目的,但我不知道如何做到这一点。或许你能说出一些想法。
    • 如何更改打开/关闭按钮的视图和位置。
    猜你喜欢
    • 2016-03-09
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多