Hi
Ich hab versucht ein Eingabe GUI zu machen wo ich eine variable Anzahl an Buttons per Schleife setze, über die ich einen Ordner per JFileChooser auswähle. Das soll dann nebenstehend in ein JFrame geschrieben werden und die Ordner sollen zusätzlich in einem File[] gespeichert werden um sie dann später zu verarbeiten.
So weit so gut. Das Problem ist jetzt das ich scheinbar keine richtige Zuordnung zu den Buttons hin kriege und daher immer nur die letzte Stelle im Array genutzt wird. Gibts dazu nen Trick? Ich kann mir kaum vorstellen das ich jeden Button einzeln aufführen mus.. :bahnhof:
Ich hab versucht ein Eingabe GUI zu machen wo ich eine variable Anzahl an Buttons per Schleife setze, über die ich einen Ordner per JFileChooser auswähle. Das soll dann nebenstehend in ein JFrame geschrieben werden und die Ordner sollen zusätzlich in einem File[] gespeichert werden um sie dann später zu verarbeiten.
So weit so gut. Das Problem ist jetzt das ich scheinbar keine richtige Zuordnung zu den Buttons hin kriege und daher immer nur die letzte Stelle im Array genutzt wird. Gibts dazu nen Trick? Ich kann mir kaum vorstellen das ich jeden Button einzeln aufführen mus.. :bahnhof:
Java:
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.border.Border;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
@SuppressWarnings("serial")
public class Fenster extends JFrame{
JFrame GUI = new JFrame();
JButton B1 = new JButton("Erzeuge UPD File");
JButton B2 = new JButton("Öffne UPD File");
JFileChooser FC = new JFileChooser("Verzeichnis wählen");
JButton IB = new JButton("Ausgabeordner");
JLabel IL = new JLabel();
public int ListLength = 10;
public File[] dirList = new File[ListLength];
public int JIval;
public Fenster(){
GUI.setSize(560, 30*ListLength+120);
GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GUI.setLocationRelativeTo(null);
GUI.setTitle("ConfigMerger");
GUI.setLayout(null);
GUI.setResizable(false);
GUI.add(B1);
GUI.add(B2);
GUI.add(IB);
GUI.add(IL);
B1.setBounds(140, 50+30*ListLength, 130, 25);
B1.setVisible(true);
B1.setToolTipText("UPD File schreiben");
B1.addActionListener(new Listener_merge(dirList));
B2.setBounds(290, 50+30*ListLength, 130, 25);
B2.setVisible(true);
B2.setToolTipText("UPD File anzeigen");
// B2.addActionListener(new Listener()); //TODO
B2.setEnabled(false);
IB.setBounds(30, 10, 130, 20);
IB.setVisible(true);
IB.setToolTipText("Ausgabeordner auswählen");
IB.addActionListener(new Listener_Ordner(0, dirList));
GUI.add(IB);
IL.setVisible(true);
IL.setBounds(170, 10, 350, 20);
Border border = BorderFactory.createLineBorder(Color.black, 1);
IL.setBorder(border);
GUI.add(IL);
for(int JIval = 1; JIval != ListLength + 1; JIval++ ){
new JImport( JIval, dirList);
}
GUI.setVisible(true);
}
public class JImport extends JFrame{
int JIval;
public JImport( int JIval, File[] dirList){
JButton IB = new JButton("Seite " + JIval);
JLabel IL = new JLabel();
this.JIval = JIval;
IB.setBounds(30, 10+30*JIval, 130, 20);
IB.setVisible(true);
IB.setToolTipText("Order Seite "+ JIval + " auswählen");
IB.addActionListener(new Listener_Ordner(JIval, dirList));
GUI.add(IB);
IL.setVisible(true);
IL.setBounds(170, 10+30*JIval, 350, 20);
Border border = BorderFactory.createLineBorder(Color.black, 1);
IL.setBorder(border);
GUI.add(IL);
setJIval();
}
public int setJIval(){
return JIval;
}
}
public class Listener_merge implements ActionListener{
Einlesen start;
Ausgeben metupd;
Ausgeben usrupd;
int a = ListLength + 1;
File[] dirList;
public Listener_merge(File[] dirList) {
this.dirList = dirList;
}
@Override
public void actionPerformed(ActionEvent arg0) {
Read();
Write();
B2.setEnabled(true);
}
public void Read(){
for(int i=1; i != a; i++){
if(dirList[i].exists()){
Einlesen start = new Einlesen(dirList[i]);
this.start = start;
}
}
}
public void Write(){
Ausgeben metupd = new Ausgeben(start.getDcstfmet().upd, "dcstfmet.upd");
this.metupd = metupd;
Ausgeben usrupd = new Ausgeben(start.getDcstfusr().upd, "dcstfusr.upd");
this.usrupd = usrupd;
}
}
public class Listener_Ordner implements ActionListener{
int JIval;
File[] dirList;
public Listener_Ordner(int JIval, File[] dirList){
this.JIval = JIval;
this.dirList = dirList;
}
public Listener_Ordner(){
}
@Override
public void actionPerformed(ActionEvent arg0) {
FC.setDialogType(JFileChooser.OPEN_DIALOG);
FC.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int x = FC.showOpenDialog(null);
if(x == JFileChooser.APPROVE_OPTION){
dirList[JIval]=FC.getSelectedFile();
for(int z = 0; z != ListLength + 1; z++ ){
IL.setBounds(175, 10+30*z, 350, 25);
if(dirList[z].exists()){
IL.setText(String.valueOf(dirList[z]));
}
}
GUI.setVisible(true);
}
}
}
}
[/Java]