我正在使用处理来使用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() });
}
}
答案 0 :(得分:1)
我遇到了类似的问题,虽然我对Processing非常陌生,但我找到了一种让它工作的方法。我做的工作是我将我的GUI元素放入controlGroup并在更新之前(我使用自定义函数setGUI())由于窗口大小的改变我使用函数hide()隐藏了controlGroup更新后,我使用show()函数再次显示它。 希望能以某种方式帮助你。