我想要一个如下图所示的 GUI 设置。
The JLayeredPane
应始终具有相同的大小,但是JPanel
和JScrollPane
可以改变尺寸。我需要JScrollPane
能够显示JLayedPane
通过单击箭头,如果JPanel
and JScrollPane
不够大,无法显示整个JLayeredPane
.
问题是,对于下面的代码,JLayeredPane
总是扩展以适应大小JScrollPane
并且如果JScrollPane
小于JLayeredPane
,它不提供滚动功能。
对发生的事情有什么想法吗?有没有更简单的代码来实现这一点?
Thanks
contentPanePanel = new javax.swing.JPanel();
contentPaneScollPane = new javax.swing.JScrollPane();
contentPane = new javax.swing.JLayeredPane();
contentPanePanel.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));
contentPane.setRequestFocusEnabled(false);
contentPane.setVerifyInputWhenFocusTarget(false);
contentPaneScollPane.setViewportView(contentPane);
javax.swing.GroupLayout contentPanePanelLayout = new javax.swing.GroupLayout(contentPanePanel);
contentPanePanel.setLayout(contentPanePanelLayout);
contentPanePanelLayout.setHorizontalGroup(
contentPanePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(contentPaneScollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 968, Short.MAX_VALUE)
);
contentPanePanelLayout.setVerticalGroup(
contentPanePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(contentPaneScollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 628, Short.MAX_VALUE)
);
是的,诀窍是将分层窗格添加到使用布局管理器的面板中,这将使分层窗格保持居中。就像是:
import java.awt.*;
import javax.swing.*;
import javax.swing.text.*;
public class ScrollPaneSSCCE
{
private static void createAndShowUI()
{
JPanel center = new JPanel();
center.setPreferredSize( new Dimension(300, 300) );
center.setBackground( Color.RED );
JPanel main = new JPanel( new GridBagLayout() );
main.add(center, new GridBagConstraints());
JFrame frame = new JFrame("Basic ScrollPaneSSCCE");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new JScrollPane( main ) );
frame.setSize(400, 400);
frame.setLocationRelativeTo( null );
frame.setVisible( true );
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowUI();
}
});
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)