有几次我因为建议使用以下方法而受到批评:
在Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:
对于布局,答案总是相同的:使用合适的LayoutManager
我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:
我有一个JFrame,在这个JFrame中我有一个我绘制的JPanel,这个面板可以是任何大小,所以我将它放入一个JScrollpane让我在面板大于窗口屏幕大小时滚动.
不幸的是,我的预期不起作用:
使JFrame窗口小于JPanel大小不会显示滚动条
JScrollPane大小现在似乎锁定了我添加到它的JPanel的大小,之前它调整到它的JFrame窗口的边界(它仍然有点这样但现在只是垂直?!)
无论我为首选大小设置什么,JPanel似乎都假设JScrollpane的大小
我确信我做的事情很愚蠢,如果有人能指出我会非常感激的话!
JPanel _ImageCanvas = new JPanel(); // 'Canvas' to draw on
JScrollPane _ScrollPane = new JScrollPane();
// set size of 'canvas'
_ImageCanvas.setMinimumSize(new Dimension(100,100));
// Scroll pane smaller then the size of the canvas so we should get scroll bars right?
_ScrollPane.setMinimumSize(new Dimension(50,50));
// Add a border to 'canvas'
_ImageCanvas.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
_ScrollPane.setViewportView(JPanel);
Run Code Online (Sandbox Code Playgroud)
非常感谢
大卫
我一直在努力寻找解决问题的方法,但我没有运气.这是一个示例代码:
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
public class Example extends JFrame
{
private static final long serialVersionUID = 1L;
public Example()
{
JPanel contentPane = (JPanel) getContentPane();
contentPane.setLayout(new BorderLayout());
JPanel panTop = new JPanel(new BorderLayout());
//JPanel panBottom = new JPanel(new BorderLayout());
JPanel panTopCenter = new JPanel();
//JPanel panTopLeft = new JPanel();
//JPanel panTopRight = new JPanel();
panTop.add(panTopCenter, BorderLayout.CENTER);
//panTop.add(panTopLeft, BorderLayout.WEST);
//panTop.add(panTopRight, BorderLayout.EAST);
contentPane.add(panTop, BorderLayout.CENTER);
//contentPane.add(panBottom, BorderLayout.SOUTH);
JPanel pan = new JPanel(); …Run Code Online (Sandbox Code Playgroud) 我有一个 gui,它有一个面板,其中包含一系列标签和文本字段,并使用弹簧布局(这是 mainPanel),另一个面板仅包含一个按钮(buttonPanel)。我试图让我的 mainPanel 也有一个垂直滚动条。我想实现我的 GUI,以便在 JFrame 中我有 2 个面板。mainPanel 出现在框架的顶部,buttonPanel 出现在mainPanel 的下方。
我的问题是我无法使面板出现,使按钮面板位于主面板下方,而且我也不知道如何向主面板添加滚动条。任何帮助,将不胜感激。
编辑:我能够解决有关 JPanel 的问题,现在我唯一的问题是我无法让我的 mainPanel 滚动。我在下面添加了最新的代码:
这是我到目前为止的代码:
public static void main(String args[]) {
JFrame frame = new JFrame("SpringLayout");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane scroll = new JScrollPane();
Container contentPane = frame.getContentPane();
JButton next = new JButton("Next");
JPanel buttonPanel = new JPanel();
buttonPanel.add(next);
SpringLayout layout = new SpringLayout();
JPanel mainPanel = new JPanel();
mainPanel.setLayout(layout);
contentPane.setLayout(new BorderLayout());
int j = 25;
for(int i =0;i<150;i++){
JLabel label = new JLabel("Enter Name " …Run Code Online (Sandbox Code Playgroud)