Добавить компоненты в JDialog - PullRequest
1 голос
/ 22 марта 2012

Когда я запускаю это, отображается пустая строка заголовка. Я просто хочу видеть компоненты и работать оттуда, но ничего не отображается. Диалог предназначен для того, чтобы пользователь мог выбрать цвет, перемещая ползунки, а затем вернуться к цвету на главной странице.

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

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

Я думаю, что вы смотрели на JColorChooser , эта JComponent банка возвращает выбранные Color

там я не могу найти правильные определения и инициализации для JSlider

EDIT

существует множество ошибок, начиная с расширений JDialog и заканчивая публичной статической функцией Color showDialog (), которая возвращает опечатки пустых контейнеров с инициализацией для ColourDialog ()

enter image description here

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();
            }
        });
    }
}
1 голос
/ 22 марта 2012

Я думаю, это может быть потому, что вы говорите "public void ColourDialog ()", это недопустимый конструктор. Попробуйте избавиться от «пустоты» и попробуйте снова.

0 голосов
/ 22 марта 2012

Вы никогда не вызываете метод ColorDialog ().Это хорошее место, чтобы упомянуть "методы запуска с буквы в нижнем регистре). Чтобы исправить ваш код:

Изменение:

    d = new ColourDialog(); 

Кому:

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