java - 如何使包含 Jpanel 的 Jframe 可滚动?

标签 java swing jframe jpanel jscrollpane

所以我有一个包含 JPanel 的 JFrame,并在其中添加带有我想要的信息的 JLabels,但由于我会在某个时候一直添加标签,因此文本太长而无法显示,所以我想添加一个滚动条。基本上我想让我的 JFrame 与 JPanel 可以滚动。我有这段代码,但我的问题是,即使滚动条出现,但它不会移动,并且在文本很多时不起作用,这意味着文本仍然会被剪切掉,并且滚动条不会移动。有谁知道如何解决这个问题吗?

import javax.swing.*;
import java.awt.*;
import java.util.*;
public class Bar {
JFrame info = new JFrame("Information");
JLabel ballinf = new JLabel();
JPanel contentPane = new JPanel();
JScrollPane scrolling = new JScrollPane();

public Bar(){
    contentPane.setOpaque(true);
    contentPane.setBackground(Color.WHITE);
    contentPane.setLayout(null);

    scrolling = new JScrollPane(contentPane,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

    info.add(scrolling);
    info.setSize(750, 600);
    info.setLocationByPlatform(true);
    info.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    info.setVisible(true);
}

public void adding(int pos){       
    ballinf = new JLabel("Something ",JLabel.CENTER);//assume the text will be bigger here and have more info
    ballinf.setSize(700, 30);
    ballinf.setForeground(Color.green);
    ballinf.setLocation(5, 5+pos);
    contentPane.add(ballinf);

    info.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    info.setVisible(true);
  }

public static void main(String[] args){
    Bar stats = new Bar();
    stats.adding(0);
    stats.adding(20);//this will be done in a for loop for more than 2 times so the text ends up to be a lot
}

}

最佳答案

contentPane.setLayout(null);

不要使用空布局!!!

您需要使用适当的布局管理器。阅读 Swing 教程中关于 Layout Managers 的部分了解更多信息和工作示例。然后,当您向面板添加组件时,布局管理器将确定面板的首选大小。

滚动 Pane 将在必要时显示滚动条。

如果您动态地将组件添加到面板(在 GUI 可见之后),则代码应类似于:

panel.add(...);
panel.revalidate();
panel.repaint();

关于java - 如何使包含 Jpanel 的 Jframe 可滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37038682/

相关文章:

java 消息显示发件人姓名

java - 我不明白为什么我的代码可以在终端和 Eclipse 中正确运行,但不能单独作为 jar 文件运行

Java:如何检查 JFrame 的菜单栏是显示在系统菜单栏中还是显示在框架本身中?

java - JTable 中的结果集

java - 为什么一个方法引用了 "throws"... 也抛出的 ctor?

java - IOUtils 类型未定义方法 toByteArray(InputStream)

java - 无法将 JTextField 添加到 JFrame

java - 实现 JFrame 和 JPanel 之间的区别

java - JFrame问题

java - 没有这样的表问题