2

ControlP5 APIで多数のボタンを表示する処理をしています。現時点では、ボタンをスケッチのウィンドウに表示できますが、フレームのサイズを変更するとボタンの位置が更新されません。ウィンドウが表示されたときに自動的に再配置するためにボタンを再描画する簡単な方法はありますかサイズを変更したり、時間を無駄にしていますか?

コードは次のとおりです。

package controlp5userinterface;

import java.awt.event.*;
import java.util.ArrayList;
import processing.core.PApplet;
import processing.core.PImage;
import controlP5.*;


public class ControlP5UserInterface extends PApplet {

ControlP5 controlP5;
PImage bg;
Controller b;

@SuppressWarnings("deprecation")
public void setup() {
    size(1000,1000);
    smooth();

    if (frame != null) {
        frame.setResizable(true);
    }

    bg = loadImage("StockBackground1.jpg");

    /*
     * 
     * BEGIN CONTROL P5 MENU GENERATION
     *  buttons will spread out to fit available screen space
     */

    controlP5 = new ControlP5(this);
    ArrayList<Button> buttons = new ArrayList<Button>();
    Group MainMenu = controlP5.addGroup("MainMenu");
    MainMenu.setSize(100, 100);
    //controlP5.addGroup("MainMenu");
    controlP5.addButton("SIMON").setGroup("MainMenu").setSize(80, 50);

    controlP5.addButton("ACN").setGroup("MainMenu").setSize(80, 50);
    controlP5.addButton("GOOG").setGroup("MainMenu").setSize(80, 50);
    //buttons.add(controlP5.addButton("AAPL").setGroup("MainMenu"));
    //buttons.add(controlP5.addButton("ACN").setGroup("MainMenu"));
    //controlP5.getGroup("MainMenu").setSize(300, 300);

}

/*
 * 
 * SCREEN RESIZE CONTROLLER HERE??(non-Javadoc)
 * @see processing.core.PApplet#draw()
 * 
 */

public void draw() {
    background(0);  // background black
    controlP5.getGroup("MainMenu").update();

}

public int sketchWidth(){
    return displayWidth;
}

public int sketchHeight(){
    return displayHeight;
}

public static void main(String _args[]) {
    PApplet.main(new String[] { controlp5userinterface.ControlP5UserInterface.class.getName() });
}

}

4

1 に答える 1

1

私は同様の問題を抱えていました.Processingにはまったく慣れていませんが、それを機能させる方法を見つけました. それを機能させるために私がしたことは、GUI要素をcontrolGroupに入れ、それを更新する前に(カスタム関数setGUI()を使用して行った)、ウィンドウサイズの変更により、関数hide()を使用してcontrolGroupを非表示にすることでした更新後、show()関数を使用して再度表示しました。うまくいけば、それが何らかの形であなたを助けることができます.

于 2015-09-28T17:28:07.723 に答える