2012-03-22 15 views
1

これを実行すると、空のタイトルバーが表示されます。私はちょうどそこからコンポーネントを見て作業することができるようにしたいが、何も表示されません。このダイアログは、スライダーを動かして色を選択し、メインページに色を戻すことができるように設計されています。JDialogにコンポーネントを追加

私はあなたが JColorChooserを見ていると思い
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

JDialog APIのコメントによれば、' .show() 'は非推奨で、' setVisiable(true) ' –

答えて

1

私は、これは無効コンストラクタです ")公共無効ColourDialog(" あなたが言うので、それはかもしれないと思います。 「無効」を取り除き、もう一度試してみてください。

+0

これは私がしなければならなかったものです。あなたがプログラミングを愛する時の瞬間。 – Joe

2

、このJComponentは戻りColor

そこ

を選択することができます私はそこにあるJSlider

EDIT

の正しい定義と初期化を行うFOUTすることはできません多くの間違いがJDialogの終わりからpublic static 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を混ぜて、たぶんタイプミス、バッテリーは含まれていません。 /) – mKorbel

+0

私はSSCCEのコードを更新しました。 =) – Joe

0

ColorDialog()メソッドを決して呼び出してはいけません。これは)小文字を持つメソッドを開始」に言及するには良い場所であるあなたのコードを修正するには:。

変更:

d = new ColourDialog(); 

へ:

d = new ColourDialog(); 
    d.ColourDialog(); 
関連する問題