2012-03-22 102 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? – 2012-03-22 02:11:53

+0

ColourDialog擴展了JDialog,所以d.show()使對話框可見,對吧? – Joe 2012-03-22 02:15:56

+0

JDialog API中的註釋表明'.show()'不推薦使用,應該使用'setVisiable(true) ' – 2012-03-22 02:34:35

回答

1

我想可能是因爲你說 「公共無效ColourDialog()」 這是一個無效的構造函數。嘗試擺脫「空白」,然後再試一次。

+0

這就是我必須做的和我的代碼工作。當你喜歡編程的時候。 – Joe 2012-03-22 03:17:45

2

我認爲你必須看看JColorChooser,這JComponent可以返回選定Color

那裏,我不能FOUT出正確的定義和初始化爲JSlider

編輯

有以JDialog結尾的公共靜態顏色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 2012-03-22 02:28:31

+1

@Joe沒有人知道這段代碼縮小了錯過的開始和結束,也許你混合了JComponets,也許只有錯字,電池沒有包括,以便reall幫助你必須用[SSCCE]編輯你的問題(http://sscce.org /) – mKorbel 2012-03-22 02:32:30

+0

我已經更新了SSCCE的代碼。 =) – Joe 2012-03-22 02:47:56

0

你永遠不會調用ColorDialog()方法。這是一個好去處提「以小寫字母開頭的方法)爲了解決你的代碼:

變化:

d = new ColourDialog(); 

要:

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