我想在用户没有选择两个PDF时禁用我的mergeButton。 我会如何去做这件事?我试图做一个while循环来检查file1
和file2
是否为空,但循环没有终止。当用户没有选择文件时,JAVA禁用按钮
package pdfMerge;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFMergerUtility;
import java.awt.event.*;
public class pdfMerger extends JFrame {
private static final String ActionEvent = null;
private JButton choose1, choose2, mergeButton;
private JFileChooser fileChooser1, fileChooser2;
private JPanel contentsPane;
private int returnValue1, returnValue2;
private File file1, file2;
private String fileName1, fileName2;
private boolean valid;
public pdfMerger(){
super("PDF Merger");
setLayout(new BorderLayout());
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
addComponents();
addAction();
setVisible(true);
}
public void addComponents(){
contentsPane = new JPanel(new GridLayout(0, 3));
add(contentsPane, BorderLayout.SOUTH);
choose1 = new JButton("Choose 1st pdf");
choose2 = new JButton("Choose 2nd pdf");
mergeButton = new JButton("Merge");
fileChooser1 = new JFileChooser();
fileChooser2 = new JFileChooser();
contentsPane.add(choose1);
contentsPane.add(choose2);
contentsPane.add(mergeButton);
}
public void addAction(){
choose1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
if (event.getSource() == choose1){
returnValue1 = fileChooser1.showOpenDialog(null);
if (returnValue1 == JFileChooser.APPROVE_OPTION){
file1 = fileChooser1.getSelectedFile();
fileName1 = file1.toString();
fileName1 = fileName1.replace("\\", "\\\\");
System.out.println(fileName1);
}
}
}
}
);
choose2.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
if (event.getSource() == choose2){
returnValue2 = fileChooser2.showOpenDialog(null);
if (returnValue2 == JFileChooser.APPROVE_OPTION){
file2 = fileChooser2.getSelectedFile();
fileName2 = file2.toString();
fileName2 = fileName2.replace("\\", "\\\\");
System.out.println(fileName2);
}
}
}
}
);
mergeButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
PDFMergerUtility ut = new PDFMergerUtility();
ut.addSource(fileName1);
ut.addSource(fileName2);
ut.setDestinationFileName("C:\\Users\\Shaheedul\\Desktop\\MergedPDF.pdf");
try {
ut.mergeDocuments();
} catch (Exception error){
System.out.println("Something went wrong!");
}
}
}
);
}
}
有许多方法可以做到这一点,但这里是我想尝试:在节目开始禁用mergeButton,只有启用如果同时设置了file1和file2,则从choose1并选择2的动作侦听器。 –
您当前的用户界面不太友好。点击每个“选择”按钮后,您应该显示选定的文件,以便用户可以确认已选择文件。 – camickr