JScrollPane不显示JPanel

Oja*_*dge 0 java swing jpanel jframe jscrollpane

所以我试图在java中创建一个浏览器.我想让用户能够滚动网站的内容.我尝试将JPanel放在JScrollPane中,但JPanel没有显示出来.我遇到这个问题后,我做了一个新的java项目来测试这个问题,问题仍然存在.这是测试项目的代码:

package exp;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class test {
    public static void main(String[] args) {
        JFrame f = new JFrame("test");
        JScrollPane s = new JScrollPane();
        JPanel p = new JPanel();
        s.add(p);
        f.add(s);
        f.setVisible(true);
        f.setSize(800, 600);
        p.setBackground(Color.WHITE);
        p.getGraphics().drawString("test", 50, 50);

    }
}
Run Code Online (Sandbox Code Playgroud)

这是它显示的内容: 这就是代码所淹没的

cam*_*ckr 6

JScrollPane s = new JScrollPane();
JPanel p = new JPanel();
s.add(p);
Run Code Online (Sandbox Code Playgroud)

不要将组件直接添加到滚动窗格.需要将组件添加到viewport滚动窗格中.你这样做是通过使用:

JPanel p = new JPanel();
JScrollPane s = new JScrollPane(p);
Run Code Online (Sandbox Code Playgroud)

要么

JPanel p = new JPanel();
JScrollPane s = new JScrollPane();
s.setViewportView( p );
Run Code Online (Sandbox Code Playgroud)

不要使用该getGraphics(...)方法进行绘画:

// p.getGraphics().drawString("test", 50, 50);
Run Code Online (Sandbox Code Playgroud)

您应该覆盖a的paintComponent()方法JPanel并将面板添加到框架中.阅读自定义绘画的Swing教程中的部分以获取更多信息和工作示例.

保留所有Swing基础知识的教程链接.