首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不显示Java swing JPanel和JScrollPane

不显示Java swing JPanel和JScrollPane
EN

Stack Overflow用户
提问于 2017-05-05 07:54:10
回答 1查看 144关注 0票数 0

当我运行该程序时,JPanel不可见。不过,它可以在没有JScrollPane的情况下工作。这快把我逼疯了!以前,我是用画布和ScrollPane做的。请注意,FlowchartPanel扩展了JPanel。

代码语言:javascript
复制
public class Window extends JFrame{

private FlowchartPanel panel;                       // contains all the main graphics
private JScrollPane scrollpane;                     // contains panel
private int canvasWidth, canvasHeight;              // the width and height of the canvas object in pixels
private Flowchart flowchart;                        // the flowchart object

public Window(Flowchart flowchart) {
    super();
    canvasWidth = 900;
    canvasHeight = 700;
    this.flowchart = flowchart;
    flowchart.setWidth(canvasWidth);
    flowchart.setHeight(canvasHeight);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    panel = new FlowchartPanel(flowchart);
    panel.setPreferredSize(new Dimension(canvasWidth, canvasHeight));
    scrollpane = new JScrollPane();
    scrollpane.setPreferredSize(new Dimension(canvasWidth, canvasHeight));
    scrollpane.add(panel);
    add(scrollpane);
    //add(panel);
    pack();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-05-05 08:04:04

不要直接将组件添加到JScrollPane

需要将组件添加到JScrollPaneJViewPort

最简单的方法是使用:

代码语言:javascript
复制
JScrollPane scrollPane = new JScrollPane( panel );

另一种方法是替换(添加)视口中的组件,方法是:

代码语言:javascript
复制
scrollPane.setViewportView( panel );

新维度(

panel.setPreferredSize(canvasWidth,canvasHeight));

不要设置组件的首选大小。每个Swing组件都负责确定自己的首选大小。相反,重写自定义面板的getPreferredSize()方法以返回大小。这样,当自定义绘画更改时,您可以根据需要动态更改首选大小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43794440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档