java - 如何创建滑动面板

标签 java swing panel slide

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

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;

}

最佳答案

看看 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));    
      }     
   }    
}

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

关于java - 如何创建滑动面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5429293/

相关文章:

java - 以相反的顺序在 LinearLayout 中添加 View

Java Applet 无法访问文件

java - Jboss 7 上的 Jersey 2

Java正则表达式从URL解析特定分号分隔的参数?

java - 如何在多个窗口中更新JList?

swing - scala Slider 抛出类型转换异常

java - 如何停止 SwingWorker?

javascript - 拖动面板时的 extjs 阴影错误

c# - 使用位图作为缓冲区绘制到面板

winforms - 如何在 Windows 窗体应用程序中向具有多个控件的 Panel 控件添加滚动条?