2011-07-06 74 views
2

我一直试图在JFrame中粘贴一个PApplet,并在用户更改JFrame的大小时调整大小,但文档存在时尚不清楚。 Here有人告诉我使用调整JPanel中的PApplet的大小

void setup() { 
    frame.setResizable(true); 
} 

void resize(int w, int h) { 
    super.resize(w,h); 
    frame.setSize(w,h); 
} 

但是当我尝试,它似乎帧是空的,我不就如何确保调整获取的叫,反正清晰。

有没有人得到这个工作?

编辑:简化的代码。

下面是我的一些代码,基于http://wiki.processing.org/w/Swing_JSliders

public class MyPanel extends JPanel 
{ 
    public MyPanel() 
    { 
     //have tried both BoxLayout and BorderLayout 
     setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); 

     //if, instead of a PApplet I use a JPanel, this resizes fine 
     // it's only when using a PApplet that it won't resize 
     //add our processing window 
     PApplet pa = new PApplet(); 
     pa.init(); 
     add(pa); 
    } 

    // create external JFrame 
    private static void createGui() 
    { 
     // create new JFrame 
     JFrame jf = new JFrame("test"); 

     // this allows program to exit 
     jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     // You add things to the contentPane in a JFrame 
     jf.getContentPane().add(new MyPane()); 

     // keep window from being resized 
     //jf.setResizable(false); 

     // size frame 
     jf.pack(); 

     // make frame visible 
     jf.setVisible(true); 

    } 

    public static void main(String[] args) 
    { 
     // threadsafe way to create a Swing GUI 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
       @Override 
       public void run() 
       { 
        createGui(); 
       } 
      } 
     ); 
    } 
} 

感谢,任何帮助是极大的赞赏。

+1

从我的阅读中,PApplet是一个基于AWT的组件,它是从Applet派生而来的。你确定要把它放在一个Swing应用程序/ JPanel中吗?此外,如果您的JPanel使用BorderLayout并添加PApplet BorderLayout.CENTER(以及另一个BorderLayout位置中的其他组件),该怎么办? –

+0

我将它放在JPanel中,因为我想将它与非处理GUI配对,并且http://wiki.processing.org/w/Swing_JSliders 提供了一种方法。至于使用BorderLayout,它拥有PApplet很好,但我仍然不知道如何调整它的大小,它不会自动执行。 – Dogmatixed

+0

@Dogmatixed:*“至于使用BorderLayout,它拥有PApplet很好,..resize ..,它不会自动执行它”*它应该如果您将它添加到CENTER约束(没有其他布局是用BorderLayout强制容器的尺寸最小)。为了更快地获得更好的帮助,请尝试使用普通彩色面板代替“PApplet”制作[SSCCE](http://pscode.org/sscce.html)。 –

回答

1

其实答案很简单。看起来,除非正在使用绘制,否则PApplet不会调整大小。这是因为转向

PApplet pa = new PApplet(); 

PApplet pa = new PApplet() 
{ 
public void draw(){}; 
}; 

或用适当延长PApplet取代它一样简单。

我只是没有让我的个人证明的概念足够详细。