[英]Java: Swing - JCheckBox at compare 2 files
我正在嘗試如果CheckBox為true以顯示兩個文件開始的位置不同。
碼:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class SwingFC implements ActionListener {
JTextField jtfFirst, jtfSecond;
JLabel jlabFirst, jlabSecond, jlabResult;
JButton jbtnComp;
JCheckBox checkBox;
SwingFC() {
JFrame jfrm = new JFrame("Compare Files");
jfrm.setLayout(new FlowLayout());
jfrm.setSize(300, 220);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtfFirst = new JTextField(25);
jtfSecond = new JTextField(25);
jtfFirst.setActionCommand("fileA");
jtfSecond.setActionCommand("fileB");
JButton jbtnComp = new JButton("Compare");
jbtnComp.addActionListener(this);
jlabFirst = new JLabel("First file: ");
jlabSecond = new JLabel("Second file: ");
jlabResult = new JLabel("");
checkBox = new JCheckBox("Show position of mismatch");
jfrm.add(jlabFirst);
jfrm.add(jtfFirst);
jfrm.add(jlabSecond);
jfrm.add(jtfSecond);
jfrm.add(checkBox);
jfrm.add(jbtnComp);
jfrm.add(jlabResult);
jfrm.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ae) {
int i, j = 0;
if (jtfFirst.getText().equals("")) {
jlabResult.setText("First file name missing.");
return;
}
if (jtfSecond.getText().equals("")) {
jlabResult.setText("Second file name missing.");
return;
}
try (FileInputStream f1 = new FileInputStream(jtfFirst.getText());
FileInputStream f2 = new FileInputStream(jtfSecond.getText())) {
String count = null;
do {
i = f1.read();
j = f2.read();
if (i != j)
break;
} while (i != -1 && j != -1);
if (i != j)
if (checkBox.isSelected())
jlabResult.setText("Files differ at location" + count);
else
jlabResult.setText("Files are not the same");
else
jlabResult.setText("Files compare equal.");
} catch (IOException e) {
jlabResult.setText("File Error");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SwingFC();
}
});
}
}
題:
我想知道如何分配這個不同的String count
並顯示在
jlabResult.setText(“文件在不同位置” +計數);
我該如何解決?
問候。
添加變量以存儲位置:
int position = 0;
然后在i == j
時遞增
並設置文本jlabResult.setText("Files differ at location " + position);
您不需要可變的String count
整個代碼是:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class SwingFC implements ActionListener {
JTextField jtfFirst, jtfSecond;
JLabel jlabFirst, jlabSecond, jlabResult;
JButton jbtnComp;
JCheckBox checkBox;
SwingFC() {
JFrame jfrm = new JFrame("Compare Files");
jfrm.setLayout(new FlowLayout());
jfrm.setSize(300, 220);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtfFirst = new JTextField(25);
jtfSecond = new JTextField(25);
jtfFirst.setActionCommand("fileA");
jtfSecond.setActionCommand("fileB");
JButton jbtnComp = new JButton("Compare");
jbtnComp.addActionListener(this);
jlabFirst = new JLabel("First file: ");
jlabSecond = new JLabel("Second file: ");
jlabResult = new JLabel("");
checkBox = new JCheckBox("Show position of mismatch");
jfrm.add(jlabFirst);
jfrm.add(jtfFirst);
jfrm.add(jlabSecond);
jfrm.add(jtfSecond);
jfrm.add(checkBox);
jfrm.add(jbtnComp);
jfrm.add(jlabResult);
jfrm.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ae) {
int i, j = 0;
if (jtfFirst.getText().equals("")) {
jlabResult.setText("First file name missing.");
return;
}
if (jtfSecond.getText().equals("")) {
jlabResult.setText("Second file name missing.");
return;
}
try (FileInputStream f1 = new FileInputStream(jtfFirst.getText());
FileInputStream f2 = new FileInputStream(jtfSecond.getText())) {
//String count = null;
int position = 0;
do {
i = f1.read();
j = f2.read();
position++;
if (i != j)
break;
} while (i != -1 && j != -1);
if (i != j)
if (checkBox.isSelected())
jlabResult.setText("Files differ at location " + position);
else
jlabResult.setText("Files are not the same");
else
jlabResult.setText("Files compare equal.");
} catch (IOException e) {
jlabResult.setText("File Error");
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SwingFC();
}
});
}
}
這個對我有用。 我希望這是有幫助的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.