Java 向JDialog添加组件

Java 向JDialog添加组件,java,swing,colors,jdialog,Java,Swing,Colors,Jdialog,运行此操作时,将显示一个空标题栏。我只是希望能够看到的组成部分和工作从那里,但没有显示。该对话框设计为允许用户通过移动滑块选择颜色,然后返回到主页面的颜色 import java.awt.*; import javax.swing.*; public class ColourDialog extends JDialog { String colorNames[] = {"Red: ", "Green: ", "Blue: "}; Label labels[] = new Lab

运行此操作时,将显示一个空标题栏。我只是希望能够看到的组成部分和工作从那里,但没有显示。该对话框设计为允许用户通过移动滑块选择颜色,然后返回到主页面的颜色

import java.awt.*;
import javax.swing.*;

public class ColourDialog extends JDialog
{
    String colorNames[] = {"Red: ", "Green: ", "Blue: "};
    Label labels[] = new Label[3];
    JSlider slider[]= new JSlider[3];
    Label lb;
    static ColourDialog d;

    public void ColourDialog()
    {
        setModal(true);
        Container c = getContentPane();
        c.setLayout(new BorderLayout());
        JPanel sliderPanel = new JPanel();
        sliderPanel.setLayout(new GridLayout(0, 1));

        for (int i = 0; i < slider.length;  i++)
        {
            labels[i] = new Label(colorNames[i] + 255);

            sliderPanel.add(labels[i]);
            slider[i] = new JSlider(SwingConstants.HORIZONTAL, 0, 255, 255);
            slider[i].setMinorTickSpacing(10);
            slider[i].setMajorTickSpacing(50);
            slider[i].setPaintTicks(true);
            slider[i].setPaintLabels(true);

            sliderPanel.add(slider[i]);
            //slider[i].addChangeListener(this);
        }

        lb = new Label("Colour");

        c.add(sliderPanel, BorderLayout.CENTER);
        c.add(lb, BorderLayout.SOUTH);

        setSize(500, 450);
        setLocation(200,200);
        setTitle("Colour Dialog");
    }

    public static Color showDialog()
    {
        if (d == null)
        d = new ColourDialog();

        d.show();

        //return new Color(red,green,blue);
        return new Color(0,0,0);
    }

    public static void main(String args[])
    {
        ColourDialog.showDialog();
    }
}
import java.awt.*;
导入javax.swing.*;
公共类ColorDialog扩展JDialog
{
字符串colorNames[]={“红色:”、“绿色:”、“蓝色:”};
标签标签[]=新标签[3];
JSlider滑块[]=新JSlider[3];
标签lb;
静态着色;
公共对话框()
{
setModal(真);
容器c=getContentPane();
c、 setLayout(新的BorderLayout());
JPanel sliderPanel=新的JPanel();
sliderPanel.setLayout(新的GridLayout(0,1));
对于(int i=0;i
我想你已经看过了,这个
JComponent
可以返回选中的
颜色

在那里,我无法找到正确的定义和初始化

编辑

从扩展JDialog end with public static Color showDialog()开始,会返回带有colorDialog()初始化的空容器打字错误

import java.awt.*;
导入javax.swing.*;
公共类颜色对话框{
私有JDialog dialog=newjdialog();
私有字符串colorNames[]={“红色:”、“绿色:”、“蓝色:”};
自有标签[]=新标签[3];
私有JSlider滑块[]=新JSlider[3];
自有品牌lb;
公共对话(){
JPanel sliderPanel=新的JPanel();
sliderPanel.setLayout(新的GridLayout(0,1));
对于(int i=0;i
我想可能是因为您说“public void colorDialog()”这是一个无效的构造函数。尝试删除“void”并重试。

您永远不会调用ColorDialog()方法。这是一个提到“用小写字母开始方法”的好地方。要修复代码:

更改:

    d = new ColourDialog(); 
致:


d.show()
做什么?colorDialog扩展了JDialog,因此d.show()使对话框可见,对吗?JDialog API中的注释说
.show()
不推荐使用,您应该使用
可设置可见(true)
谢谢。但我不认为这是问题的根源,因为我仍然看到一个空对话框,所以它是可见的。谢谢你的提示。请问你是否在代码中看到导致这一结果的任何东西?我真的很想看到这项工作……再次感谢。@Joe没有人知道这段代码剪掉了错过的开始和结束,也许你是JComponets,可能只有打字错误,电池不包括在内,对于reall帮助,你必须编辑你的问题,这是我所要做的一切,我的代码工作。当你热爱编程的时刻。
    d = new ColourDialog(); 
    d = new ColourDialog(); 
    d.ColourDialog();