【问题标题】:Add components to JDialog将组件添加到 JDialog
【发布时间】:2012-03-22 02:08:52
【问题描述】:

当我运行它时,会显示一个空的标题栏。我只想能够看到组件并从那里工作,但没有显示任何内容。该对话框旨在允许用户通过移动滑块来选择颜色,然后返回到主页面的颜色。

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();
    }
}

【问题讨论】:

  • d.show() 是做什么的?
  • ColourDialog 扩展了 JDialog,所以 d.show() 使对话框可见,对吧?
  • JDialog API 中的评论说 .show() 已弃用,您应该使用 setVisiable(true)
  • 谢谢。我不认为这是问题的根源,因为我仍然看到一个空对话框,所以它是可见的。

标签: java swing colors jdialog


【解决方案1】:

我想你看过JColorChooser,这个JComponent可以返回选中的Color

我无法为JSlider 提供正确的定义和初始化

编辑

有很多错误以extends JDialog开头并以public static Color showDialog()结尾,返回空容器拼写错误并初始化ColourDialog()

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

public class ColourDialog {

    private JDialog dialog = new JDialog();
    private String colorNames[] = {"Red: ", "Green: ", "Blue: "};
    private Label labels[] = new Label[3];
    private JSlider slider[] = new JSlider[3];
    private Label lb;

    public ColourDialog() {
        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]);
        }
        lb = new Label("Colour");
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        dialog.setModal(true);
        dialog.add(sliderPanel, BorderLayout.CENTER);
        dialog.add(lb, BorderLayout.SOUTH);
        dialog.pack();
        dialog.setLocation(200, 200);
        dialog.setTitle("Colour Dialog");
        dialog.setVisible(true);
    }

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                ColourDialog colourDialog = new ColourDialog();
            }
        });
    }
}

【讨论】:

  • 感谢您的提示。请问您是否在代码中看到导致此结果的任何内容?我真的很想看到这项工作......再次感谢。
  • @Joe 没有人知道这段代码剪断了错过的开始和结束,也许你混合了 JCompones,也许只有错字,不包括电池,真正帮助你必须用SSCCE编辑你的问题
【解决方案2】:

我认为这可能是因为您说“public void ColourDialog()”这是一个无效的构造函数。尝试摆脱“空白”,然后再试一次。

【讨论】:

  • 这就是我所要做的,并且我的代码可以正常工作。热爱编程的时刻。
【解决方案3】:

您永远不会调用方法 ColorDialog()。这是提及“以小写字母开头的方法)的好地方。要修复您的代码:

变化:

    d = new ColourDialog(); 

收件人:

    d = new ColourDialog(); 
    d.ColourDialog();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多