2017-05-10 22 views
0

私はドロップダウンリストを使用するプログラムを作成していましたが、JComboBoxボックスの宣言行に固執しました。これらのエラーメッセージが表示されます: この行に複数のマーカー - コンストラクタJComboBox(String [] ) 未定義 - 行ブレークポイント:JComboBox [行:25] - JComboBox() JComboBoxをどのように定義しようとしても、何らかのエラーが発生します。それで私を助けてください。ここでJComboBoxを宣言するにはどうすればよいですか?

は、publicクラスのコードです:

import javax.swing.*; 
    import java.awt.FlowLayout; 
    import java.awt.Font; 
    import javax.swing.JFrame; 
    import javax.swing.JTextField; 
    import javax.swing.JRadioButton; 
    import javax.swing.ButtonGroup; 
    import java.awt.event.ItemListener; 
    import java.awt.event.ItemEvent; 

    public class JComboBox extends JFrame { 

     private JComboBox box; 
     private JLabel picture; 

     private static String[] filename = { "p.png", "i.png" }; 
     private Icon pics[] = { new ImageIcon(getClass().getResource(filename[0])), 
       new ImageIcon(getClass().getResource(filename[1])) }; 

     public JComboBox() { 

      super("This is the title"); 
      setLayout(new FlowLayout()); 

      JComboBox box = new JComboBox(filename); 

      box.addItemListener(new ItemListener() { 
       public void itemStateChanged(ItemEvent event) { 
        if (event.getStateChange() == ItemEvent.SELECTED) { 
         picture.setIcon(pics[box.getSelectedIndex()]); 
        } 
       } 
      }); 

      add(box); 
      picture = new JLabel(pics[0]); 
      add(picture); 

     } 

    } 

そしてここでは、メインクラスのコードです:

import javax.swing.*; 

    public class JComboBox1 extends JFrame { 

     public static void main(String[] args) { 


      JComboBox Box = new JComboBox(); 
      Box.setVisible(true); 
      Box.setSize(400,400); 
      Box.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     } 

    } 

ありがとうございました。

+2

インポートした既存のSwingクラス[javax.swing.JComboBox](https://docs.oracle.com/javase/8/docs/api/javax/swing/JComboBox.html)をネームキャッシュに使用しています。 'import javax.swing。*'を使ってください。クラス名を変更してみてください。 –

+0

ありがとう!私の問題は解決しました。私はよく知っていたはずです、笑。 –

答えて

0

@Andyが指摘したように、あなたの問題は、あなたのクラスとスイングコンポーネントの名前に衝突があることです。あなたはIDEとあなたのプライベートインスタンス上にカーソルを移動した場合、このような

public class JComboBox extends JFrame { 

    private javax.swing.JComboBox box; 

として、完全修飾名でSwingコンポーネントを参照する必要がありますJComboBoxのあなたは絶対にあなたのクラスを指定しなければならない場合は、完全修飾が表示されるはずですJComboBoxクラスを作成したパッケージに一致する名前。あなた自身の痛みを取り除き、クラス名を変更してください。

+0

私はこれが不十分だと思います。おそらく、 'import javax.swing。*'も取り除く必要があります。 *クラスを標準ライブラリクラスと全く同じ名前にしないでください。スウィングの接頭辞を使ってクラスを区別することも避けてください。それは混乱し、あなたに時間と悲しみをかけるでしょう。 –

+0

私はいつも輸入品を明示する方が好きですが、それは私の好みです。上記のことは、何が起こっているのかについてのもう少しの洞察を提供することに過ぎませんでしたが、はい、私はあなたに同意します_それは最善の答えです。 :) – Floresj4

+0

私はクラスの名前を変更するだけでそれを解決することができました。私はよく知っていたはずですが、この間違いは初心者でもあります。皆さん、ありがとうございました! –

関連する問題