gpt4 book ai didi

java - JSplitPane 隐藏和显示右侧部分

转载 作者:行者123 更新时间:2023-11-30 11:12:06 24 4
gpt4 key购买 nike

我有一个包含两个部分的 JSplitPane。我想在单击按钮时隐藏正确的部分,并在再次单击同一个按钮时将其恢复。

这是我目前所拥有的:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
if (PrincipalSplitPane.getDividerSize() == 1.0)
PrincipalSplitPane.setDividerLocation(0.0);
else
PrincipalSplitPane.setDividerLocation(1.0);
}

最佳答案

可以使用JSplitPanegetRightComponent()方法,然后调用setVisible(false)来隐藏它。

要再次显示它,请调用 setVisible(true) 并使用 setDividerLocation(...) 方法设置divider location

一个例子

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;

@SuppressWarnings("serial")
public class ResizingSplitPane extends JFrame implements ActionListener
{

private JButton clickMe;
private JPanel leftPanel;
private JPanel rightPanel;
private JSplitPane split;

// private int dividerLocation;

public ResizingSplitPane()
{
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new BorderLayout());

// Center Panel
clickMe = new JButton("Click Me!!");
clickMe.addActionListener(this);

JPanel panel = new JPanel(new BorderLayout());

panel.add(clickMe);

// Bottom Panel
leftPanel = new JPanel(new BorderLayout());
rightPanel = new JPanel(new BorderLayout());

leftPanel.add(new JLabel("Left"), BorderLayout.CENTER);
rightPanel.add(new JLabel("Right"), BorderLayout.CENTER);

split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
split.setResizeWeight(.5d);

add(panel, BorderLayout.PAGE_START);
add(split, BorderLayout.CENTER);

setVisible(true);
}

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new ResizingSplitPane();
}
});
}

@Override
public void actionPerformed(ActionEvent e)
{

if (e.getSource() == clickMe)
{
if (split.getRightComponent().isVisible())
{
// dividerLocation = split.getDividerLocation();
split.getRightComponent().setVisible(false);
}
else
{
split.getRightComponent().setVisible(true);
split.setDividerLocation(0.5);
}
}
}

}

如果需要保存之前的divider位置,可以将当前位置保存到一个变量中(如代码中的dividerLocation变量),然后在调用setDividerLocation 传入该变量。

关于java - JSplitPane 隐藏和显示右侧部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com