gpt4 book ai didi

JAVA JScrollPane 不显示

转载 作者:行者123 更新时间:2023-12-05 07:54:32 25 4
gpt4 key购买 nike

我有一个带滚动条的 JPanel,我想向它添加很多 JLabel。但是滚动条不起作用。我无法使用滚动条,即使面板已满,它也不会滚动。这是我的代码:

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

import javax.swing.*;


public class Scroll {
public static void main(String[] args) {
JPanel panel = new JPanel(new GridLayout(0,1));
JPanel p = new JPanel(new BorderLayout());
JScrollPane scroll = new JScrollPane(panel);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
p.add(scroll, BorderLayout.NORTH);
JButton but = new JButton("OK");
p.add(but, BorderLayout.SOUTH);
but.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
panel.add(new JLabel("Some random text"));
scroll.revalidate();
p.repaint();p.revalidate();
}
});
JFrame frame = new JFrame();
frame.setSize(800,200);
frame.setVisible(true);
frame.add(p);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
}
}

最佳答案

您的问题似乎出在您的布局管理器上。我认为当您不使用 BorderLayout.CENTER 位置时 BorderLayout 的行为很奇怪。我换了行

p.add(scroll, BorderLayout.NORTH);

p.add(scroll, BorderLayout.CENTER);

然后,为了使文本从顶部而不是居中显示,我将面板组件的布局管理器更改为 BoxLayout。来自:

JPanel panel = new JPanel(new GridLayout(0, 1));

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

这似乎给了我你想要的功能。让我知道这是否解决了您的问题!

关于JAVA JScrollPane 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31186699/

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