Я видел другие сообщения, в которых предлагается использовать IOStreams, а не FileReaders и FileWriters, поэтому я переписал все таким образом. Однако происходит то же самое - все это работает в NETBEANS, все работает нормально из командной строки с java -jar ,, но двойной щелчок по значку просто отображает мой графический интерфейс без каких-либо данных, которые он должен был прочитать, и без отображения каких-либо изображений.
Я также прочитал ряд статей о CLASS-PATHS, но мог догадаться, что если бы это была проблема, мое приложение также не смогло бы запуститься из командной строки? но он работает нормально.
Вот упрощенная версия того, что я пытаюсь сделать: прочитать файл .txt и отобразить его содержимое в JPanel (я понимаю, что включил больше импорта, чем нужно для этой упрощенной версии):
Код: Выделить всё
package com.steve;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Testing extends JFrame{
public Testing(){
super("My Test App");
EntryPanel panel = new EntryPanel();
this.getContentPane().add(panel);
this.setSize(800, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public class EntryPanel extends JPanel{
String strTextToDisplay;
public EntryPanel(){
super();
try{
this.strTextToDisplay = getTextFromFile();
}
catch(IOException ioe){
System.out.println(ioe.getMessage());
}
}
private String getTextFromFile() throws IOException{
String fileName = "testfile.txt";
var filePath = Paths.get(fileName);
String myStr = "Here it is:\n";
try(BufferedReader br = Files.newBufferedReader(filePath, StandardCharsets.UTF_8)){
String line;
while((line = br.readLine()) != null){
myStr = myStr.concat(line).concat("\n");
}
}
System.out.println(myStr);
return myStr;
}
@Override
public void paintComponent(Graphics g){
g.setColor(new Color(0, 0, 255));
g.fillRect(0,0, this.getWidth(), this.getHeight());
g.setColor(new Color(255, 100, 100));
g.setFont(new Font("Serif", Font.BOLD, 15));
g.drawString(strTextToDisplay, 20, 20);
}
}
public static void main(String[] args){
System.out.println("In main");
Testing myTest = new Testing();
}
}
Версия манифеста: 1.0
Путь к классу: com.resources/testfile.txt
Основной класс: com.steve.Testing
Автор: 21.0.10 (Ubuntu)
Благодарен за любой совет, ведь очень неприятно иметь приложение, которое не работает изолированно.
Спасибо
Мобильная версия