.jar file verhält sich anders...

M4D-M4X

Bekanntes Mitglied
Hi ich habe mal eine Grundlegende Frage zu .jar files.

Ist es möglich, dass sich die .jar files je nach java version anders vehalten bzw. nicht funktionieren ?

ich habe auf de version 1.6.0_18 ein Programm geschrieben und es funktioniert einwandfrei.

Wenn ich das Programm jedoch auf einem anderen PC ausführe (Java Version 1.6.0_21) wird die GUI
zwar aufgebaut aber die haupfunktionen gehen nicht mehr...

Ich bin diesbezüglich echt ratlos, da es auf dem anderen System funktioniert...
 

AmunRa

Gesperrter Benutzer
Und kommt eine Exception ?

bei diesem Versionsrpung den du geschrieben hast kann ich mir nicht vorstellen, dass da unterschiede sein sollten.
 
S

SlaterB

Gast
du könntest auf jar verzichten und erstmal nur Java-Dateien auf beiden Computern testen,
da kann immer noch genausoviel schiefgehen, jar als Ursache wäre dann aber komplett obsolet

> die haupfunktionen gehen nicht mehr...

gehts genauer? sind es primär Anzeigefehler, fliegen Exceptions?
gibt java -version wirklich 6.21 oder ist das nur eine Vermutung weil 6.21 installiert ist (vielleicht zusammen mit anderen Java-Versionen)
 

M4D-M4X

Bekanntes Mitglied
Woran erkenne ich, dass Exceptions ausgegeben werden, wenn ich ein .jar File ausführe?
Die Java Versionen habe ich über java -version ausgelesen.

Um die Hauptfunktion handelt es sich, dass dateien mit einer bestimmten endung eingelesen werden und dann mit namen als JRadio Button auf dem Panel des Frames erscheinen. Anschließend wird eine dieser Dateien ausgewählt und die wird dann mit enem fest definierten namen kopiert sobald man auf Apply drückt.

Ich weiß nicht ob es sich hierbei um einen anzeigefehler handelt oder ob sie wirklich nicht gesetzt werden...
 
Zuletzt bearbeitet:
S

SlaterB

Gast
falls du das Programm als Quellcode vorliegen hast, sollst du gewisse Schritte debuggen/ loggen,
etwa ob die Daten eingelesen, ob die Buttons erstellt/ eingefügt werden, usw.

falls es nur eine fehlerhafte GUI-Darstellung ist, so kann ich mir vorstellen dass dies an schlechter Programmierung liegt,
die dann auf einem PC schon unvorhersehbar reagiert, je nach Version und anderen Rechner gerne anders

bei Änderung der GUI zur Laufzeit sind Layouts zu beachten, und am Ende
validate()
+
repaint()
am JFrame aufrufen, in der Richtung alles bekannt, von ausreichend robusten Einbau überzeugt?
gibts Quellcode dahingehend zu posten?
 

M4D-M4X

Bekanntes Mitglied
So wie du es beschreibst liegt es zu 90% an meinem schlechten Code, da ich noch ein relativer Programmieranfänger bin.

Der Code lautet wie folgt:

[Java]

import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import java.util.*;


public class CreateWindow extends JFrame {

private static final long serialVersionUID = 1L;

Logic Program = new Logic();
ArrayList <String> salGetConfig = new ArrayList <String> (0);
ButtonGroup JRadioGroup = new ButtonGroup();
ArrayList <JRadioButton> JRButtons = new ArrayList <JRadioButton> (0);
JFrame frame = new JFrame("Vesp.imp Switcher");
JPanel panel = new JPanel();
String [] ICVersions = new String[2];
String sICVersion = "";
String sVespOrdner="";
String ConfigPath = System.getProperty("user.dir");;
String ICPath = "";
int iheight = 50;
String sTFVespFolder = "";

public CreateWindow() throws IOException{

ICVersions[0] = "IC71";
ICVersions[1] = "IC72";
frame.setBounds(460, 230, 300, 360);
frame.setVisible(true);
panel.setLayout(null);


File file = new File(ConfigPath+"/Config.ini");
if(file.exists()){
FileReader File = new FileReader(ConfigPath+"/Config.ini");
BufferedReader read = new BufferedReader(File);
String zeile = "";

while((zeile=read.readLine()) !=null ){
salGetConfig.add(zeile);
}
sTFVespFolder = salGetConfig.get(1);
ICPath = salGetConfig.get(0);
sVespOrdner = salGetConfig.get(1);

}
else{
FileWriter FWriter = new FileWriter(ConfigPath+"/Config.ini");
BufferedWriter Test = new BufferedWriter(FWriter);

Test.write("Erstkonfiguration");
Test.newLine();
Test.write("Erstkonfiguration");

ICPath="Erstkonfiguration";
sTFVespFolder = "Erstkonfiguration";

Test.close();
FWriter.close();
}
}

public void Window() throws IOException{

final JLabel Label = new JLabel("Vesp.imp Switcher") ;
Label.setBounds(90, 13, 178, 20);
frame.add(Label);

final JLabel VespFolder = new JLabel("Vesp Ordner:");
VespFolder.setBounds(30, 245, 105, 20);
frame.add(VespFolder);

final JLabel SetPath = new JLabel("IC Pfad:");
SetPath.setBounds(60, 272, 105, 20);
frame.add(SetPath);


final TextArea TACInf = new TextArea("Copy Information:"+'\n'+""+'\n');
TACInf.setBounds(5, 50, 140, 165);
TACInf.setEditable(false);
frame.add(TACInf);


final JFormattedTextField TFSetPath = new JFormattedTextField(ICPath);
TFSetPath.setBounds(115, 275, 175, 15);
frame.add(TFSetPath);

final JFormattedTextField TFVespFolder = new JFormattedTextField(sTFVespFolder);
TFVespFolder.setBounds(115, 248, 175, 15);
frame.add(TFVespFolder);

final JButton Exit = new JButton("Exit");
Exit.setBounds(220,300,60,20);
frame.add(Exit);

Exit.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
System.exit( 0 );
}
} );


final JComboBox ICVersion = new JComboBox(ICVersions);
ICVersion.setBounds(5, 220, 50, 20);
ICVersion.setSelectedIndex(1);
frame.add(ICVersion);

ICVersion.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
if(ICVersion.getSelectedIndex() == 0){
ICPath = System.getenv("Avaya_"+ICVersions[0]+"_HOME");
if(ICPath == null){
ICPath ="";
TFSetPath.setText(ICPath);
}
else{

if(ICPath == null){
ICPath ="";
TFSetPath.setText(ICPath);
}
else{
TFSetPath.setText(ICPath+"/etc");
}


}
TFSetPath.updateUI();

}
else if(ICVersion.getSelectedIndex() == 1){
ICPath = System.getenv("Avaya_"+ICVersions[1]+"_HOME");

if(ICPath == null){
ICPath ="";
TFSetPath.setText(ICPath);
}
else{
TFSetPath.setText(ICPath+"/etc");
}

}
}
} );

final JButton SaveConfig = new JButton("Save Config");
SaveConfig.setBounds(184, 220, 105, 20);
frame.add(SaveConfig);

SaveConfig.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
try {
Program.WriteConfig(TFSetPath.getText(),TFVespFolder.getText(),ConfigPath);
} catch (IOException e1) {
e1.printStackTrace();
}
}
});

final JButton Refresh = new JButton("Refresh Vesps");
Refresh.setBounds(60, 220, 120, 20);
frame.add(Refresh);

Refresh.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
sVespOrdner = TFVespFolder.getText();
for(int i = 0;i<JRButtons.size();i++){

JRadioGroup.remove( JRButtons.get(i));

}
panel.removeAll();
frame.repaint();
JRButtons.clear();
JRadioGroup = new ButtonGroup();
refreshJRButtons();
}
});

final JButton Apply = new JButton("Apply");
Apply.setBounds(5, 300, 70, 20);
frame.add(Apply);

Apply.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
try {
String Choice = "";
for(int i = 0;i<JRButtons.size();i++){
JRadioButton JRButton = JRButtons.get(i);
if(JRButton.isSelected()){
Choice = JRButton.getName();
}
}
ArrayList <String> CopyInformation = Program.ChangeVesp(TFVespFolder.getText(),TFSetPath.getText(),Choice);
for(int i = 0; i<CopyInformation.size();i++){
TACInf.append(CopyInformation.get(i));
}
}
catch (Exception e1) {
e1.printStackTrace();
}}});

refreshJRButtons();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}

private void refreshJRButtons(){

iheight = 50;
String []saNumRButtons = Program.getVespsIn(sVespOrdner);
if(saNumRButtons != null){
for(int i =0;i<saNumRButtons.length;i++){
//erstellen des RButtons
JRadioButton RButton = new JRadioButton(saNumRButtons);
RButton.setName(saNumRButtons);
RButton.setBounds(150, iheight, 400, 20);




//hinzufügen des RButtons
JRButtons.add(RButton);
panel.add(RButton);
JRadioGroup.add(RButton);
panel.repaint();

//Höhenbestimmung + selection
iheight = iheight + 20;
if(RButton.getName().equals("Vesp.imp")||RButton.getName().equals("vesp.imp")){
RButton.setSelected(true);
}
}
}


}





[/Java]


Ich führe repaint() auf die einzelnen Componenten aus, jedoch kein validate(), da es mir bei jedem mal als ich validate() aufgerufen habe meine komlette GUI zerschossen hat... warum auch immer.

Ihr könnt mir auch ruhig sagen, was man an dem Code besser machen kann (Da gibts denk ich ne ganze Menge :autsch:)
 
S

SlaterB

Gast
dein panel hat das null-Layout bzw. kein Layout, da ist validate() nicht nötig,

ich vermute dann als Fehlerursache den auch beliebten Fehler, bei dir vorhanden, setVisible(true); nicht als letzten Befehl auszuführen,
wer ruft wann die Methode Window() auf? verschiebe
> frame.setVisible(true);
von Zeile 33 an das Ende der Window()-Methode

edit:
bzw. steht dort sowieso schon, nur Zeile 33 weg

edit:
der Platz von panel im JFrame könnte noch genauer definiert werden,
genauso für die anderen Komponenten, die werden alle geaddet, alle haben setBounds bis auf das panel,
aber eigentlich hat das JFrame gar kein null-Layout?


-----

allgemein:
Attribute und Methoden unbedingt klein schreiben, Klassen (und Konstruktoren) groß

deine Klasse CreateWindow muss hier nicht von JFrame erben, da du ein JFrame-Attribut verwendest,

new ArrayList(0); mit Länge 0 ist ziemlich fragwürdig, es geht auch einfach new ArrayList();
 
Zuletzt bearbeitet von einem Moderator:

M4D-M4X

Bekanntes Mitglied
Oh okay das wusste ich noch gar nicht, dass man validate() nur bei einem LayoutManager verwendet...

Okay der fehler das ich setVisible(true) zwei mal aufrufe ist mir fast peinlich :oops:

das heißt das momentane TODO ist jetzt:

1.Zeile 33 löschen xD
2.Dem panel Bounds zuweisen
3.Dem Frame ein null layout zuweisen


Ist das mit der ArrayList(0) nicht egal?
Ich finde es für mich einfach übersichtlicher wenn ich ne Null reinschreibe.... oder ist das doch tragischer als angenommen?

Das mit dem erben von JFrame brauche ich dann anscheinend nur, wenn ich keinen JFrame extra deklariert hätte oder?

Die Methode Window() wird von meiner Main Klasse aus aufgerufen (Habe ich mir so angewöhnt immer eine Main Klasse zu schreiben, die das Programm startet).


Der Code ist wie folgt:

[Java]

import java.io.IOException;
public class Main {

public static void main(String[] args) throws IOException{
CreateWindow start = new CreateWindow();
start.Window();
}
}
[/Java]
 
S

SlaterB

Gast
> Das mit dem erben von JFrame brauche ich dann anscheinend nur, wenn ich keinen JFrame extra deklariert hätte oder?

ja

--

ArrayList(0) funktioniert genauso, macht nur bisschen Arbeit, erstellt sich anfangs intern ein Array der Länge 0,
bei der ersten Einfügung ist das schon zuwenig Platz, es muss ein neues Array der Länge 1 erstellt werden, dann, 2, 4, 7,
es wird immer mehr erhöht wenn nötig, immer (alte Size * 1.5 +1)

ArrayList() beginnt mit 10, da passt schon ein wenig rein ohne dass der interne Platz vergrößert werden muss
 

M4D-M4X

Bekanntes Mitglied
Okay das ist alles gut zu wissen =)

Habe jetzt mal eben die Veränderungen durchgeführt.

Sobald ich dem Frame (vor dem setzen der Bounds) ein null Layout zuweise erscheinen die JRadio Buttons auch nicht mehr...

womit hat das zu tun ?
 
S

SlaterB

Gast
dass panel keine Bounds hat und so in einem richtigen null-Layout des JFrames gar nicht mehr auftaucht
 

M4D-M4X

Bekanntes Mitglied
Okay ich habe jetzt das Panel an die richtige stelle geordert.
Es ist dort definitiv, jedoch werden die Buttons immer noch nicht angezeigt...

ich bin da echt ratlos?

mach ich irgendwas falsch?

Okay das bestimmt...

ich könnte mir höchstens vorstellen, dass es etwas mit der Buttonerstellung zu tun hat.
(Methode refreshJRButtons)
 
S

SlaterB

Gast
'es ist dort definitiv klingt nicht' klingt nicht so definitiv, setze einen Border drum, füge oben links/ unten rechts dauerhaft begrenzende Komponenten ein, wobei die bei
> panel.removeAll();
wohl verschwinden..

logge die Methode, was ist
> String []saNumRButtons = Program.getVespsIn(sVespOrdner);
wird der Code wirklich ausgeführt, ist das Array vielleicht leer, dann gibts keine Buttons,
kann einen völlig anderen Grund haben als ich bisher angesprochen hatte, etwa irgendeine Datei nicht gefunden, da anderer Verzeichnisaufbau
 

M4D-M4X

Bekanntes Mitglied
Ich habe mit dem Code mal ein wenig rumexperimentiert und die Buttons sind definitiv da!,
da der Kopiervorgang bei einem Druck auf Apply stattfindet... Habe zwei verschiedene Ordner gehabt wo die selbe Datei einmal 0kb und einmal 1 kb hatte und der eine kb wurde auch wirklich kopiert, was ohne die buttons nicht möglich wäre....

Der Code wird auch definitiv ausgeführt.

Ich denke nicht, dass es an der Logik des Programmes scheitert.
Alle Arrays haben ihre Werte... die Buttons sind auch eigentlich da... werden nur nicht angezeigt =/
 
S

SlaterB

Gast
hmm, du kannst noch deinen aktuellen Code posten, aber ich glaube dazu fällt mir soweit nichts mehr ein
 

M4D-M4X

Bekanntes Mitglied
Okay dann hier nochmal mein aktueller Code:


GUI Klasse:
[Java]

import java.awt.Color;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import java.util.*;


public class CreateWindow{

private static final long serialVersionUID = 1L;

Logic Program = new Logic();
ArrayList <String> salGetConfig = new ArrayList <String> (0);
ButtonGroup JRadioGroup = new ButtonGroup();
ArrayList <JRadioButton> JRButtons = new ArrayList <JRadioButton> (0);
JFrame frame = new JFrame("Vesp.imp Switcher");
JPanel panel = new JPanel();
String [] ICVersions = new String[2];
String sICVersion = "";
String sVespOrdner="";
String ConfigPath = System.getProperty("user.dir");;
String ICPath = "";
int iheight = 50;
String sTFVespFolder = "";

public CreateWindow() throws IOException{

ICVersions[0] = "IC71";
ICVersions[1] = "IC72";
frame.setLayout(null);
panel.setLayout(null);
frame.setBounds(460, 230, 300, 360);
panel.setBounds(150,50,150,165);

File file = new File(ConfigPath+"/Config.ini");
if(file.exists()){
FileReader File = new FileReader(ConfigPath+"/Config.ini");
BufferedReader read = new BufferedReader(File);
String zeile = "";

while((zeile=read.readLine()) !=null ){
salGetConfig.add(zeile);
}
sTFVespFolder = salGetConfig.get(1);
ICPath = salGetConfig.get(0);
sVespOrdner = salGetConfig.get(1);

}
else{
FileWriter FWriter = new FileWriter(ConfigPath+"/Config.ini");
BufferedWriter Test = new BufferedWriter(FWriter);

Test.write("Erstkonfiguration");
Test.newLine();
Test.write("Erstkonfiguration");

ICPath="Erstkonfiguration";
sTFVespFolder = "Erstkonfiguration";

Test.close();
FWriter.close();
}
}

public void Window() throws IOException{

final JLabel Label = new JLabel("Vesp.imp Switcher") ;
Label.setBounds(90, 13, 178, 20);
frame.add(Label);

final JLabel VespFolder = new JLabel("Vesp Ordner:");
VespFolder.setBounds(30, 245, 105, 20);
frame.add(VespFolder);

final JLabel SetPath = new JLabel("IC Pfad:");
SetPath.setBounds(60, 272, 105, 20);
frame.add(SetPath);


final TextArea TACInf = new TextArea("Copy Information:"+'\n'+""+'\n');
TACInf.setBounds(5, 50, 140, 165);
TACInf.setEditable(false);
frame.add(TACInf);


final JFormattedTextField TFSetPath = new JFormattedTextField(ICPath);
TFSetPath.setBounds(115, 275, 175, 15);
frame.add(TFSetPath);

final JFormattedTextField TFVespFolder = new JFormattedTextField(sTFVespFolder);
TFVespFolder.setBounds(115, 248, 175, 15);
frame.add(TFVespFolder);

final JButton Exit = new JButton("Exit");
Exit.setBounds(220,300,60,20);
frame.add(Exit);

Exit.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
System.exit( 0 );
}
} );


final JComboBox ICVersion = new JComboBox(ICVersions);
ICVersion.setBounds(5, 220, 50, 20);
ICVersion.setSelectedIndex(1);
frame.add(ICVersion);

ICVersion.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
if(ICVersion.getSelectedIndex() == 0){
ICPath = System.getenv("Avaya_"+ICVersions[0]+"_HOME");
if(ICPath == null){
ICPath ="";
TFSetPath.setText(ICPath);
}
else{

if(ICPath == null){
ICPath ="";
TFSetPath.setText(ICPath);
}
else{
TFSetPath.setText(ICPath+"/etc");
}


}
TFSetPath.updateUI();

}
else if(ICVersion.getSelectedIndex() == 1){
ICPath = System.getenv("Avaya_"+ICVersions[1]+"_HOME");

if(ICPath == null){
ICPath ="";
TFSetPath.setText(ICPath);
}
else{
TFSetPath.setText(ICPath+"/etc");
}

}
}
} );

final JButton SaveConfig = new JButton("Save Config");
SaveConfig.setBounds(184, 220, 105, 20);
frame.add(SaveConfig);

SaveConfig.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
try {
Program.WriteConfig(TFSetPath.getText(),TFVespFolder.getText(),ConfigPath);
} catch (IOException e1) {
e1.printStackTrace();
}
}
});

final JButton Refresh = new JButton("Refresh Vesps");
Refresh.setBounds(60, 220, 120, 20);
frame.add(Refresh);

Refresh.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
sVespOrdner = TFVespFolder.getText();
for(int i = 0;i<JRButtons.size();i++){

JRadioGroup.remove( JRButtons.get(i));

}
panel.removeAll();
frame.repaint();
JRButtons.clear();
JRadioGroup = new ButtonGroup();
refreshJRButtons();
}
});

final JButton Apply = new JButton("Apply");
Apply.setBounds(5, 300, 70, 20);
frame.add(Apply);

Apply.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
try {
String Choice = "";
for(int i = 0;i<JRButtons.size();i++){
JRadioButton JRButton = JRButtons.get(i);
if(JRButton.isSelected()){
Choice = JRButton.getName();
}
}
ArrayList <String> CopyInformation = Program.ChangeVesp(TFVespFolder.getText(),TFSetPath.getText(),Choice);
for(int i = 0; i<CopyInformation.size();i++){
TACInf.append(CopyInformation.get(i));
}
}
catch (Exception e1) {
e1.printStackTrace();
}}});

refreshJRButtons();
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
}

private void refreshJRButtons(){

iheight = 55;
String []saNumRButtons = Program.getVespsIn(sVespOrdner);
if(saNumRButtons != null){
for(int i =0;i<saNumRButtons.length;i++){
//erstellen des RButtons
JRadioButton RButton = new JRadioButton(saNumRButtons);
RButton.setName(saNumRButtons);
RButton.setBounds(150, iheight, 400, 20);

//hinzufügen des RButtons
JRButtons.add(RButton);
panel.add(RButton);
JRadioGroup.add(RButton);
panel.repaint();

//Höhenbestimmung + selection
iheight = iheight + 20;
if(RButton.getName().equals("Vesp.imp")||RButton.getName().equals("vesp.imp")){
RButton.setSelected(true);
}
}
}


}



[/Java]



und jetzt die Logik Klasse:

[Java]

import java.io.*;
import java.nio.channels.ByteChannel;
import java.nio.channels.FileChannel;
import java.util.*;

public class Logic {



long lBuffer = ((1024*1024)/2);

public Logic(){

}

public void WriteConfig(String ICPath, String VespFolder, String ConfigPath) throws IOException{

try{
DeleteConfig();

FileWriter WriteConfig = new FileWriter(ConfigPath+"/Config.ini");
BufferedWriter writer = new BufferedWriter(WriteConfig);

writer.write(ICPath);
writer.newLine();
writer.write(VespFolder);

writer.close();
WriteConfig.close();
}
catch(FileNotFoundException e){
System.out.println("Die Datei konnte nicht gefunden werden");
}
}

private void DeleteConfig(){
File Config = new File("C:/Dokumente und Einstellungen/mallgaier/Desktop/Config.ini");
Config.delete();
}

public String[] getVespsIn(String sVespOrdner){

File dir = new File(sVespOrdner);

String[] Files = dir.list(new FilenameFilter() {

public boolean accept(File d, String name) {

return name.endsWith(".imp");
}
});



return Files;
}

public ArrayList <String> ChangeVesp(String SourcePath,String DestPath,String Choice) throws Exception{

ArrayList <String> CopyInformation = new ArrayList <String> (0);

File source = new File((SourcePath+"/"+Choice));
File destination = new File(DestPath+"/Vesp.imp");

FileInputStream fileInputStream = new FileInputStream(source);
FileOutputStream fileOutputStream = new FileOutputStream(destination);
FileChannel inputChannel = fileInputStream.getChannel();
FileChannel outputChannel = fileOutputStream.getChannel();
CopyInformation = transfer(inputChannel, outputChannel, source.length(), true);
fileInputStream.close();
fileOutputStream.close();
return CopyInformation;
}

private ArrayList <String> transfer(FileChannel fileChannel, ByteChannel byteChannel, long lengthInBytes, boolean verbose)throws IOException {
ArrayList <String> getcopytext = new ArrayList <String> (0);
long overallBytesTransfered = 0L;
long time = -System.currentTimeMillis();
while (overallBytesTransfered < lengthInBytes) {
long bytesTransfered = 0L;
bytesTransfered = fileChannel.transferTo(overallBytesTransfered, Math.min(lBuffer, lengthInBytes - overallBytesTransfered), byteChannel);
overallBytesTransfered += bytesTransfered;
if (verbose) {
getcopytext.add("Bytes transfered: " + overallBytesTransfered + " progress: " + (Math.round(overallBytesTransfered / ((double) lengthInBytes) * 100.0)) + "%"+'\n');
}
}
time += System.currentTimeMillis();
if (verbose) {
getcopytext.add("Transfered: " + overallBytesTransfered + " bytes in: " + (time / 1000) + " s "+'\n'+""+'\n');
}
return getcopytext;
}
}



[/Java]



Wenn du keinen Rat mehr hast... kannst du mir vllt nen Tipp geben wie du so ne GUI aufsetzen würdest?
Vor allem mit neuen Buttons die zu einem existierendne frame hinzugefügt werden.

Das wäre echt super =)
 
S

SlaterB

Gast
bei dir sind generell keine Buttons mehr zu sehen, richtig?
weder am alten noch am neuen PC,
das wäre ja eine wichtige Info, so ist klar dass ein Fehler vorliegt den ich bei mir genauso habe und der blitzschnell zu finden ist

das Problem ist nun nämlich, dass das Panel nur noch den Bereich x=150 bis x=300 im JFrame einnimmt,
deinen Buttons ordnest du
> RButton.setBounds(150, iheight, 400, 20);
die Postition x = 150 bis 550 zu und zwar relativ zum panel, also x=300 auf dem JFrame, welches nur 300 breit ist,
damit liegen die Buttons genau außerhalb des sichtbaren Bereichs,
schreibe
RButton.setBounds(50, iheight, 400, 20);
dann wirds besser

eine Layout-Alternative wäre z.B. ein vertikales Box-Layout,
How to Use BoxLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)
einmal das Layout gesetzt musst du die Buttons nur noch adden, keine Position zuweisen,
in dem Fall dann mit validate() arbeiten
 

M4D-M4X

Bekanntes Mitglied
Danke SlaterB du bist ein Gott :D

Da hätte einer selbst auch draufkommen können *seuftz*

Vielen Danke für die intensive Hilfestellung =)

Hast du vllt. noch ein paar generelle Tipps für mich?

Und danke für den Link, der scheint mir verdammt gut zu sein.
Den werde ich mir demnächst mal zu gemüte führen.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> Hast du vllt. noch ein paar generelle Tipps für mich?

die goldenen zwei Regeln sind
überall System.out.println()
und einfach vorgehen, wenn im panel nix zu sehen ist, dann nicht über komplizierte Listener und darin Schleifen + vorher noch Datei einlesen usw. befüllen, sondern erstmal alles dazu ausbauen/ ignorieren und nur irgendwo bei der Panel-Initialisierung eine einzelne Test-Komponente hinzufügen,

hab ich hier allerdings nicht gemacht und hilft auch nicht wirklich wenn man die Positionierung partout falsch versteht
 

M4D-M4X

Bekanntes Mitglied
Ja das nehm ich mir zu Herzen:)

Das Problem ist jetzt nur noch... dass es auf dem anderen PC immer noch nicht läuft und ich es einfach nicht verstehe o_O

Was ich gerade erst festgestellt habe ist, dass hier kein kopiervorgang startet sobald ich auf Apply klicke was ja soviel bedeutet dass es keine Buttons gibt....

Es ist ein Mysterium o_O
 
S

SlaterB

Gast
was wieder zu
logge die Methode, was ist
> String []saNumRButtons = Program.getVespsIn(sVespOrdner);
wird der Code wirklich ausgeführt, ist das Array vielleicht leer, dann gibts keine Buttons,
kann einen völlig anderen Grund haben als ich bisher angesprochen hatte, etwa irgendeine Datei nicht gefunden, da anderer Verzeichnisaufbau
führt

loggen ist die goldene Regel 1
 

M4D-M4X

Bekanntes Mitglied
Meine Frage ist jetzt wie man das Programm am besten loggt?

Ich meine ich habe ja nur das Programm und keine Console etc.

Muss ich da dann immer etwas is Programm mit einbauen oder gibts da ne einfachere Möglichkeit?
 
S

SlaterB

Gast
System.out.println,
ein Logger in eine Datei,
selber Strings in eine Datei schreiben,
in die GUI in eine JTextArea,

zur Unterstützung dieser Vorgänge/ genauerer Analyse die Strings vielleicht in einer statischen Liste speichern
 

M4D-M4X

Bekanntes Mitglied
Okay jetzt habe ich mal 2 Stunden hin und hergellogt via "Ich packe String in mein Textfeld" :D

Ich habe den Fehler gefunden... Kein Programmierfehler sondern ein (wie ich finde) ziemlich gemeiner
Fehler.

Und damit andere davon profitieren.. Hier das Problem mitsamt Lösung:

Das Programm wurde dafür geschaffen .imp Dateien automatisch zu erkennen und zu kopieren.
Auf dem 1. PC wo es funktioniert hat, habe ich Orginale .imps verwendet und auf Rechner 2. habe ich nur via Neu -> Textdokument -> Umbennenen -> Vesp.imp Dateien erstellt wodurch der Dateityp immernoch ein Textdokument war.

Als ich ebenfalls die Originalen .imp Dateien in den Ordner geschmissen habe hat alles wunderbar funktioniert.


Zum Schluss noch eine Frage:

Ich habe in meinem Programm einen FilenameFilter deklariert mit der Funktion -> name.endsWith(".imp");

Also sollte das doch auch einfach so funktionieren wenn ich ein Textdokument hernehme und umbennene oder ?


edit:
Es ist möglich das ganze via Textdokument zu machen, jedoch muss unter Ordneroption die Funktion
-> Erweiterungen bei bekannten Dateitypen ausblenden
deaktiviert werden.


Vielen Dank euch allen für die ausgiebige Hilfe, ich habe hierbei sehr viel gelernt :)
 
Zuletzt bearbeitet:
S

SlaterB

Gast
eine Datei hat keinen 'Dateityp',
evtl. hast du die Datei von Vesp.txt auf Vesp.imp.txt umbenannt weil im Explorer Dateiendungen ausgeblendet werden oder ähnlich komisches

im Java-Programm Verzeichnisse und Dateinamen auszugeben (VOR irgendwelchen Filtern, Verarbeitung usw.) gehört ganz klar zum Logging
 
I

imho1001

Gast
Gerade mit Windows 7 ausprobiert. Neue Textdatei --> umbenannt in .imp ergibt eine Datei: Name.imp.txt
Schau mal mit der EIngabeaufforderung in dein Verzeichnis. Dann müsstest du es sehen.

Ich weiss jetzt nicht ob alle Windows Versionen die Umbenennung so handhaben. Einfach mal ausprobieren.
Gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 23
I Dateien in einem .war - File durchgehen? Java Basics - Anfänger-Themen 1
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
R File.pathSeparator und File.separator Java Basics - Anfänger-Themen 46
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
izoards Prunsrv - Windows Service - .bat file starten Java Basics - Anfänger-Themen 84
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
berserkerdq2 IOstreams, was unterscheidet file von z. B. BufferedWriter? Java Basics - Anfänger-Themen 11
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
A java jar-File Java Basics - Anfänger-Themen 1
E Executable jar file fehler Java Basics - Anfänger-Themen 9
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
I ZIP File erstellen Java Basics - Anfänger-Themen 10
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
Tom/S File Java Basics - Anfänger-Themen 10
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
C File speichern Java Basics - Anfänger-Themen 5
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
K File (png) in Image laden Java Basics - Anfänger-Themen 3
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
D Input/Output File exists canRead canWrite Java Basics - Anfänger-Themen 11
B cal4j - Error at line 1:Unexpected end of file Java Basics - Anfänger-Themen 0
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
F File von Windowsfreigabe laden Java Basics - Anfänger-Themen 1
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
E War-File Problem mit Eclipse Java Basics - Anfänger-Themen 3
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
K Runable Jar File erstellen Java Basics - Anfänger-Themen 17
T Java Executable jar file funktioniert nicht Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
Kopak'rraf Korruptes zip File. Java Basics - Anfänger-Themen 0
T File für Einstellungen wird nicht geladen Java Basics - Anfänger-Themen 1
S Sounddatei in Jar File integrieren Java Basics - Anfänger-Themen 2
S Index File bauen Java Basics - Anfänger-Themen 5
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
T filereader , file aus programm einlesen Java Basics - Anfänger-Themen 12
Ghostman1711 Itext PDF print File gelockt by Java Java Basics - Anfänger-Themen 15
N Email mit Anhang - File not Found Java Basics - Anfänger-Themen 1
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A file.delete funktioniert nicht Java Basics - Anfänger-Themen 15
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
S jar file Java Basics - Anfänger-Themen 19
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
B Dateityp von File bekommen Java Basics - Anfänger-Themen 2
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
E Große Datenmengen effizient in CSV File speichern Java Basics - Anfänger-Themen 4
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N File virtuell ByteStream Java Basics - Anfänger-Themen 11
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
Anfänger2011 file.isDirectory() liefert falschen Wert!? Java Basics - Anfänger-Themen 1
ms_cikar Jar file mit resource erzuegen Java Basics - Anfänger-Themen 28
E lesen csv file column by column Java Basics - Anfänger-Themen 10
U Anhand von Ant ein War-File erstellen Java Basics - Anfänger-Themen 0
B Quellcode einelsen "line by line" (und abspeichern in file (txt) Java Basics - Anfänger-Themen 7
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
P Jar File Java Basics - Anfänger-Themen 3
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
S CSV File - "Vergleichen und Sortieren" Java Basics - Anfänger-Themen 3
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Ruvok Executable Jar File startet nicht Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben