首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JColorChooser内部处理3.5

使用JColorChooser内部处理3.5
EN

Stack Overflow用户
提问于 2020-02-26 22:33:33
回答 1查看 114关注 0票数 0

我试图在草图中使用JColorChooser:

代码语言:javascript
复制
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 ?

EN

回答 1

Stack Overflow用户

发布于 2020-02-26 22:50:18

最后,创建一个虚拟框架似乎是可行的,但我将等待其他答案:

代码语言:javascript
复制
...
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;
}
...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60423628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档