【问题标题】:JScrollPane now showing its viewportJScrollPane 现在显示其视口
【发布时间】:2009-01-15 22:58:00
【问题描述】:

我正在使用 Java Swing 制作应用程序,但遇到了问题。我制作了一个选项卡式面板,它需要一个简单的面板和一个滚动面板。简单的面板工作正常,但在我的滚动面板中我只能看到滚动条,而不是视口,我的代码如下:

内容窗格

public class ContentPane extends JTabbedPane {
    private InfoPanel ip;
    ScrollPanel sp;

    public InfoPanel getIp() {
        return ip;
    }

    public ContentPane(GraphPanel gp) {
        this.sp = new ScrollPanel(gp);
        this.sp.setViewportView(gp);

        this.addTab("Graph", this.sp);
        this.ip = new InfoPanel(gp);
        this.addTab("Info", ip);
    }
}

滚动面板

public class ScrollPanel extends JScrollPane {
    public ScrollPanel(GraphPanel gp){
        this.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        this.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        this.repaint();
    }
}

图形面板

public GraphPanel(StatusBar sb) {
    this.sb = sb;
    zoomLevel = 5;
    sm = new Simulation();
    mh = new MouseHandler(this, sm);
    this.addMouseListener(mh);
    this.setBackground(new Color(240, 165, 98));        
    this.repaint();
}

由于我没有收到任何错误或异常,所以我现在完全迷失了采取哪种方法。

【问题讨论】:

  • 我可以补充一点,我在 GraphPanel 中有一个 MouseListener,它仍然在面板中注册我的鼠标点击,但那里仍然没有显示任何内容..

标签: java swing jscrollpane viewport


【解决方案1】:

你不应该继承 JScrollPane,没有必要。

但是如果你这样做了,不要忘记将组件添加到滚动窗格中。

在您的子类中,您将 GraphPanel 添加到滚动窗格中。:

public class ScrollPanel extends JScrollPane {
    public ScrollPanel(GraphPanel gp){

         // ::::  HERE ::: you are not doing anything with gp 
         // like this.setViewPort( gp ) or something like that

        this.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        this.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        this.repaint();
    }
}

试试:

public class ScrollPanel extends JScrollPane {
    public ScrollPanel(GraphPanel gp){
        super( gp );
        .... etc ...            

并让 GraphPanel 扩展 JComponent 或 JPanel

【讨论】:

  • 我在 ContentPane 类中添加了图形面板作为视口,我也尝试过,但还是不行。
  • 哦,是的,我刚刚看到了那部分……让我试试其他的。
  • 老兄,这行得通,你能用几句话解释我做错了什么吗?非常感谢:)
  • 哦,还有,我的滚动面板不知道什么时候需要滚动,我应该在哪里设置这个选项?
  • 再看看,真的有用吗?因为可能另一个选项卡不能很好地工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多