2012-03-22 1 views
1

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

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

Что' d.show () 'do? –

+0

ColourDialog расширяет JDialog, поэтому d.show() делает диалог видимым, не так ли? – Joe

+0

Комментарий в API JDialog говорит, что' .show() 'устарел и что вы должны использовать' setVisiable (true) ' –

ответ

1

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

+0

Это все, что мне нужно было сделать, и мой код работает. Моменты, когда вы любите программирование. – Joe

2

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

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

EDIT

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

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

Спасибо за подсказку. Могу ли я спросить, видите ли вы что-нибудь в коде, который ведет к этому результату? Мне бы очень хотелось увидеть эту работу ... еще раз спасибо. – Joe

+1

@Joe никто не знает, что этот код отключил пропущенный старт и конец, возможно, вы смешиваете JComponets, может быть, только опечатки, батарея не включена, для получения справки вам нужно отредактировать свой вопрос с помощью [SSCCE] (http://sscce.org /) – mKorbel

+0

Я обновил код для SSCCE. =) – Joe

0

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

Изменение:

d = new ColourDialog(); 

To:

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

 Смежные вопросы

  • Нет связанных вопросов^_^