Изменение размера PApplet в JPanel - PullRequest
2 голосов
/ 06 июля 2011

Я пытался вставить PApplet в JFrame и изменить его размер, когда пользователь изменяет размер JFrame, но документация, когда она существует, неясна. Здесь Мне велено использовать

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

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

, но когда я пытаюсь, кажется, что frame is null, и я не совсем понимаю, как сделать так, чтобы getize вызывал get в любом случае.

Кто-нибудь заставил это работать?

РЕДАКТИРОВАТЬ: упрощенный код.

Вот часть моего кода, основанного на 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 Ответ

1 голос
/ 07 июля 2011

Ответ довольно прост, на самом деле.Кажется, что если ничья не используется, PApplet не будет изменен.Это так же просто, как превратить

PApplet pa = new PApplet();

в

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

или заменить его должным образом расширенным PApplet.

Я просто не сделал своего личного доказательства-концепция достаточно подробная.

...