학생들끼리 정보를 교환하기위한 프로그램을 작성해야하는 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);
}
}
1) 더 나은 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve) (최소한의 완전한 검증 가능한 예) 또는 [SSCCE] (http://www.sscce.org)를 게시하십시오. /) (짧은, 자체 포함, 올바른 예). 2) 버튼의 경우,'MouseListener'보다는'ActionListener'를 사용하십시오 .. –
ActionListener를 사용하려고했지만 결과는 같습니다. 아무 일도 일어나지 않습니다. –
@AndrewThompson이 말한 것은 여러분이 보여주고있는 코드가 여러분이 잘못하고있는 일을 말하지 않고, 작고 컴파일 가능한 실행 가능한 예제 프로그램 인 [mcve] (http : //stackoverflow.com/help/mcve) 우리가 테스트하고 수정할 수있는 것은 우리에게 당신의 문제를 보여주고 우리가 해결할 수있는 것입니다. –