2014-12-30 8 views
1

학생들끼리 정보를 교환하기위한 프로그램을 작성해야하는 Java 과제가 있습니다. GUI를 디자인하기 위해 IntelliJ IDEA와 JFormDesigner라는 플러그인을 사용하고 있습니다. 버튼을 클릭 할 때 파일 선택기를 표시하고 싶습니다. 다른 구현을 시도했지만 그 중 일부는 작동하지 않습니다. 버튼을 클릭 할 때 아무 것도 화면에 표시되지 않습니다. 누군가 해결책을 찾도록 도와 줄 수 있는지 궁금합니다. 테스트 코드 여기버튼 클릭으로 파일 선택기가 표시됩니다. Java Swing

private void ChooseButton1MouseClicked(MouseEvent e) { 

    JFileChooser fileChooser = new JFileChooser(); 
    int returnValue = fileChooser.showOpenDialog(null); 
    if (returnValue == JFileChooser.APPROVE_OPTION) 
    { 
    File selectedFile = fileChooser.getSelectedFile(); 
    System.out.println(selectedFile.getName()); 
    } 
} 

됩니다 :

import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.GroupLayout; 
import java.io.*; 

public class Test extends JPanel { 

private JButton ChooseButton; 

public Test() { 
    initComponents(); 
} 

private void ChooseButtonActionPerformed(ActionEvent e) { 
    JFileChooser fileChooser = new JFileChooser(); 
    int returnValue = fileChooser.showOpenDialog(null); 
    if (returnValue == JFileChooser.APPROVE_OPTION) 
    { 
     File selectedFile = fileChooser.getSelectedFile(); 
     System.out.println(selectedFile.getName()); 
    } 
} 

private void initComponents() { 

    ChooseButton = new JButton(); 


    setBorder(new javax.swing.border.CompoundBorder(
                  new javax.swing.border.TitledBorder(new javax.swing.border.EmptyBorder(0, 0, 0, 0), 
      "JFormDesigner Evaluation", javax.swing.border.TitledBorder.CENTER, 
      javax.swing.border.TitledBorder.BOTTOM, new java.awt.Font("Dialog", java.awt.Font.BOLD, 12), 
      java.awt.Color.red), getBorder())); addPropertyChangeListener(new java.beans.PropertyChangeListener(){public void propertyChange(java.beans.PropertyChangeEvent e) { 
     if("border".equals(e.getPropertyName())) throw new RuntimeException(); 
    } 
    }); 


    //---- ChooseButton ---- 
    ChooseButton.setText("Choose"); 
    ChooseButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      ChooseButtonActionPerformed(e); 
     } 
    }); 

    GroupLayout layout = new GroupLayout(this); 
    setLayout(layout); 
    layout.setHorizontalGroup(
            layout.createParallelGroup() 
      .addGroup(layout.createSequentialGroup() 
           .addGap(155, 155, 155) 
           .addComponent(ChooseButton) 
           .addContainerGap(175, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
            layout.createParallelGroup() 
      .addGroup(layout.createSequentialGroup() 
       .addGap(125, 125, 125) 
       .addComponent(ChooseButton) 
       .addContainerGap(143, Short.MAX_VALUE)) 
    ); 
} 

public void main(String[] args) { 

    Runnable runnable = new Runnable() { 
     @Override public void run() { 
      new Test(); 
     } 

}; 
    EventQueue.invokeLater(runnable); 
} 

} 
+3

1) 더 나은 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve) (최소한의 완전한 검증 가능한 예) 또는 [SSCCE] (http://www.sscce.org)를 게시하십시오. /) (짧은, 자체 포함, 올바른 예). 2) 버튼의 경우,'MouseListener'보다는'ActionListener'를 사용하십시오 .. –

+0

ActionListener를 사용하려고했지만 결과는 같습니다. 아무 일도 일어나지 않습니다. –

+0

@AndrewThompson이 말한 것은 여러분이 보여주고있는 코드가 여러분이 잘못하고있는 일을 말하지 않고, 작고 컴파일 가능한 실행 가능한 예제 프로그램 인 [mcve] (http : //stackoverflow.com/help/mcve) 우리가 테스트하고 수정할 수있는 것은 우리에게 당신의 문제를 보여주고 우리가 해결할 수있는 것입니다. –

답변

2

다른 청취자를 선택

ChooseButton1.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       ChooseButton1MouseClicked(e); 
      } 
     }); 

이 조치를 구현하는 방법입니다 :

버튼 코드

ChooseButton1.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     ChooseButton1MouseClicked(e); 
    } 
}); 
+0

1+ 이것은 chooseButton .... 매개 변수 유형을 변경해야하지만 좋은 조언입니다. 나는 이것이 그의 문제를 해결할 수 있기를 바랄 뿐이다. –

+0

나는 그것이 여러 가지 방법으로 해결 될 수 있다고 생각하지만, 좋은 제안이긴하지만 그것을 수정해야하는지 잘 모르겠습니다. –