У меня есть настольное приложение, которому необходимо считывать данные из текстового файла и отображать изображения в формате JPEG. В NetBeans все работает нормально, а JAR открывается и корректно запускается из командной строки, как только я перемещаю его в каталог, отличный от NetBeans. Однако, когда я открываю приложение двойным щелчком мыши, открывается графический интерфейс, но поля, которые должны отображать данные, остаются пустыми.
Я видел другие сообщения, в которых предлагается использовать IOStreams, а не FileReaders и FileWriters, поэтому я переписал все таким образом. Однако происходит то же самое - все это работает в NETBEANS, все работает нормально из командной строки с java -jar , но двойной щелчок по значку просто отображает мой графический интерфейс без каких-либо данных, которые он должен был прочитать, и без отображения каких-либо изображений.
Я также прочитал ряд статей о путях к классам, но догадался, что если бы это была проблема, мое приложение не было бы можно ли запустить из командной строки?
Вот упрощенная версия того, что я пытаюсь сделать: прочитать текстовый файл и отобразить его содержимое в 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();
}
}
Мой файл манифеста.txt выглядит следующим образом:
Manifest-Version: 1.0
Class-Path: com.resources/testfile.txt
Main-Class: com.steve.Testing
Created-By: 21.0.10 (Ubuntu)
JAR правильно запускается из командной строки, но не при двойном щелчке [дубликат] ⇐ JAVA
Программисты JAVA общаются здесь
1778233933
Anonymous
У меня есть настольное приложение, которому необходимо считывать данные из текстового файла и отображать изображения в формате JPEG. В NetBeans все работает нормально, а JAR открывается и корректно запускается из командной строки, как только я перемещаю его в каталог, отличный от NetBeans. Однако, когда я открываю приложение двойным щелчком мыши, открывается графический интерфейс, но поля, которые должны отображать данные, остаются пустыми.
Я видел другие сообщения, в которых предлагается использовать IOStreams, а не FileReaders и FileWriters, поэтому я переписал все таким образом. Однако происходит то же самое - все это работает в NETBEANS, все работает нормально из командной строки с java -jar , но двойной щелчок по значку просто отображает мой графический интерфейс без каких-либо данных, которые он должен был прочитать, и без отображения каких-либо изображений.
Я также прочитал ряд статей о путях к классам, но догадался, что если бы это была проблема, мое приложение не было бы можно ли запустить из командной строки?
Вот упрощенная версия того, что я пытаюсь сделать: прочитать текстовый файл и отобразить его содержимое в 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();
}
}
Мой файл манифеста.txt выглядит следующим образом:
Manifest-Version: 1.0
Class-Path: com.resources/testfile.txt
Main-Class: com.steve.Testing
Created-By: 21.0.10 (Ubuntu)
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия