我试图在草图中使用JColorChooser:
import javax.swing.JColorChooser;
import java.awt.Color;
import javax.swing.JFrame;
color bgcolor = color(0,100,200,150);
void setup() {
size(200, 200);
noLoop();
}
void draw() {
background(0);
fill(bgcolor);
rect(0,0,width,height);
}
void keyPressed() {
bgcolor = pickColor(bgcolor);
redraw();
}
color pickColor(int c) {
Color javaColor = new Color(c, true);
javaColor = JColorChooser.showDialog(this, "Java Color Chooser", javaColor);
if (javaColor != null ) {
c = (int)alpha(c) << 24 | (javaColor.getRed() << 16 ) | (javaColor.getGreen() << 8 ) | (javaColor.getBlue() << 0 );
println( "Picked:" + hex(c) );
return c;
}
return color(0);
}但是处理显示了一个错误:
函数"showDialog()“需要的参数如下:"showDialog(组件、字符串、颜色)”
我也尝试过使用JColorChooser.showDialog( null,"Java Color Chooser",javaColor);和带/不带noLoop()/loop(),但是没有显示对话框。
我怎样才能修好它?
是否有方法在处理过程中显示JDialog和/或JFrame ?
发布于 2020-02-26 22:50:18
最后,创建一个虚拟框架似乎是可行的,但我将等待其他答案:
...
int colorPick( int c ) {
Color javaColor = new Color( c, true);
noLoop();
JFrame jf = new JFrame( "Dummy" );
jf.setDefaultCloseOperation( JFrame.HIDE_ON_CLOSE );
jf.setLocationRelativeTo(null);
jf.setAlwaysOnTop (true);
jf.setVisible( true );
javaColor = JColorChooser.showDialog( jf,"Java Color Chooser",javaColor);
jf.setVisible( false );
loop();
if (javaColor != null ) {
c = (javaColor.getAlpha() << 24 ) | (javaColor.getRed() << 16 ) | (javaColor.getGreen() << 8 ) | (javaColor.getBlue() << 0 );
println( "Picked:" + hex(c) );
}
return c;
}
...https://stackoverflow.com/questions/60423628
复制相似问题