Java 在Processing 3.5中使用JColorChooser

Java 在Processing 3.5中使用JColorChooser,java,swing,processing,Java,Swing,Processing,我试图在草图中使用JColorChooser: import javax.swing.JColorChooser; 导入java.awt.Color; 导入javax.swing.JFrame; 颜色bgcolor=color(010020150); 无效设置(){ 大小(200200); noLoop(); } 作废提款(){ 背景(0); 填充(bgcolor); 矩形(0,0,宽度,高度); } 按下void键(){ bgcolor=pickColor(bgcolor); 重画(); }

我试图在草图中使用JColorChooser:

import javax.swing.JColorChooser;
导入java.awt.Color;
导入javax.swing.JFrame;
颜色bgcolor=color(010020150);
无效设置(){
大小(200200);
noLoop();
}
作废提款(){
背景(0);
填充(bgcolor);
矩形(0,0,宽度,高度);
}
按下void键(){
bgcolor=pickColor(bgcolor);
重画();
}
颜色选择器颜色(INTC){
Color javaColor=新颜色(c,真);
javaColor=JColorChooser.showDialog(这是“Java颜色选择器”,javaColor);
如果(javaColor!=null){

c=(int)alpha(c)最终创建一个虚拟帧似乎可行,但我将等待其他答案:

...
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;
}
...
。。。
int colorPick(INTC){
Color javaColor=新颜色(c,真);
noLoop();
JFrame jf=新JFrame(“假人”);
jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
jf.setLocationRelativeTo(空);
jf.setAlwaysOnTop(正确);
jf.setVisible(真);
javaColor=JColorChooser.showDialog(jf,“Java颜色选择器”,javaColor);
jf.setVisible(假);
loop();
如果(javaColor!=null){

c=(javaColor.getAlpha()
JColorChooser.showDialog(null,“Java颜色选择器”,javaColor);
工作得很好。我只是将您的代码复制粘贴到处理中,用
void setup(){noLoop();colorPick(Color(255,0,0));}替换了
,更新了showDialog行,它运行时没有任何抱怨。请记住,处理基于Java,但不遵循与Java相同的作用域规则,因此在实际的类方法之外,您不应该依赖此
。@Mike'Pomax'Kamermans:您使用的是哪个版本的处理和操作系统?当前的处理过程从.OS中删除基本上是不相关的:处理与JVM捆绑在一起,因此执行完全基于JVM,而不是主机操作系统。我已将您的代码更新为a,并做了两个调整:我已将
colorPick
重命名为
pickColor
(标准约定:根据方法所做的操作命名方法),我已经修复了构建
c
的方式,因为
新颜色(c)
完全丢失了alpha通道,所以您必须继承原始颜色int的
alpha(…)
。如果您将代码中的
更改为
null
,正如您提到的那样,该代码在当前处理中运行良好。