2017-05-10 1 views
0

드롭 다운 목록으로 작업 할 프로그램을 만들었지 만 JComboBox 상자의 선언 줄에 갇혀 있는데 다음과 같은 오류 메시지가 표시됩니다. 이 줄에 여러 표식이 표시됩니다 - 생성자 JComboBox (String [])) undefined - 줄 중단 점 : JComboBox [line : 25] - JComboBox() JComboBox를 정의하는 방법에 관계없이 어떤 종류의 오류가 발생합니다. 제발 도와주세요.JComboBox를 어떻게 선언합니까?

다음은 공용 클래스의 코드입니다 :

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; 

으로, 완전한 이름으로 스윙 구성 요소를 참조해야 JComboBox에 당신이 절대적으로 클래스의 이름을 지정해야합니다 경우에 당신은 완전한를 볼 수 JComboBox 클래스를 작성한 패키지와 일치하는 이름. 자신에게 약간의 고통을주지 말고 수업의 이름을 변경하십시오.

+0

저는 이것이 충분하지 않다고 생각합니다. 아마'import javax.swing. * '도 제거 할 필요가있을 것이다. 가장 좋은 대답은 * 그렇게하지 마라. * 클래스를 표준 라이브러리 클래스와 똑같이 명명하지 말라. Swing이 사용하는 접두사를 사용하여 클래스를 구별하지 마십시오. 그것은 혼란스럽고 시간과 슬픔을 안겨줄 것입니다. –

+0

나는 항상 수입에 대해 명백하게 표현하는 것을 선호하지만 이는 단지 나의 취향이다. 위의 내용은 지금 진행되고있는 일에 대해 좀 더 자세한 정보를 제공하는 것이 었습니다. 그렇습니다. 그럴 수는 없습니다. 최선의 대답입니다. :) – Floresj4

+0

나는 수업을 개명하는 것으로 그 문제를 해결할 수 있었다. 나는 더 잘 알았어야했는데,이 실수는 초심자들만큼이나. 다들 감사 해요! –

관련 문제