我想在用戶沒有選擇兩個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