Я пытаюсь понять, как работает JFrame.Я пишу программу, которая будет читать содержимое файла и отображать его в текстовой области в виде двоичной строки.Я уже выполнил задачу в строгом формате окна командной строки.Затем я понял, что мне нужно выполнить задачу через окно JPane.Итак, у меня есть код, который я написал, который позволяет пользователю выбрать файл для ввода, код затем проверяет допустимый файл, и, если он там есть, то код считывает один байт за раз, превращает его в двоичный файл,и добавляет его в строку.После считывания всего файла строка отображается как длинный двоичный файл в командной строке.Но мне нужно выполнить эту задачу в реальном JFrame, который мне удалось создать.Но теперь я не могу понять, где и как, я должен обновить текстовое поле строкой двоичной информации, после того, как оно будет прочитано и создано.Вот код:
import java.awt.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.lang.*;
public class BinaryEditor extends JFrame{
public static String myExtension ="";
public static boolean isThere=false;
public static String myFile="";;
public static String by;
public static String myDisplay="";
//******************************************************************************
public BinaryEditor(){
//setLayout(new BorderLayout(5,10));
setLayout(new GridLayout(3,2,5,5));
//Set up panels for main display
JPanel fileInput = new JPanel();
JPanel binaryPanel = new JPanel();
JPanel saveBinary = new JPanel();
//Add the panels to the frame
add(fileInput);
add(binaryPanel);
add(saveBinary);
//Set up panel properties
fileInput.setBackground(Color.BLUE);
fileInput.setFont(new Font("Californian FB", Font.BOLD, 12));
binaryPanel.setBackground(Color.WHITE);
binaryPanel.setFont(new Font("Californian FB", Font.BOLD, 12));
saveBinary.setBackground(Color.GRAY);
saveBinary.setFont(new Font("Californian FB", Font.BOLD, 12));
JTextField myDisplay = new JTextField(16);
//Add contents to the panels
fileInput.add(new JLabel("Enter a File"));
fileInput.add(new JTextField(8));
binaryPanel.add(new JTextArea("",10,22));
saveBinary.add(new JButton("Save file"));
binaryPanel.add(myDisplay);
}
//******************************************************************************
//Main Method
public static void main(String[] args) throws IOException {
//Create a JFrame panel, set it up and display it
BinaryEditor frame = new BinaryEditor();
frame.setSize(300,300);
frame.setTitle("Binary Editor");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
//Ask user for filename
Scanner input = new Scanner(System.in);
do{
System.out.print("Please input a filename to read : ");
myFile = input.next();
//Validate filename and existance
checkmyFile(myFile);
if(!isThere)
System.out.println("No such filename.");
}while(!isThere);
//File exists, now open file for reading
readFile();
System.out.println(myDisplay);
repaint();
}
//******************************************************************************
//Method to check filename
public static boolean checkmyFile(String theFile){
//Check for file existance
File file=new File(theFile);
boolean exists = file.exists();
if (!exists) {
isThere=false;
}else{
isThere=true;
}
return isThere;
}
//******************************************************************************
//Method to read file into array
public static void readFile()throws IOException{
FileInputStream myInput = new FileInputStream(myFile);
int numberBytes = myInput.available();
byte bytearray[] = new byte[numberBytes];
//Read entire file into bytearray
myInput.read(bytearray);
for(int i = 0; i < numberBytes; i++){
//System.out.println (bytearray[i]);
by = Integer.toBinaryString(bytearray[i]);
//System.out.print(by+"*");
myDisplay +=by;
}
myInput.close();
//myDisplay.
}
}//End of MAIN Method