Zuerstmal hallo an Alle, die sich meines kleinen bescheidenen Problems annehmen wollen.
Und zwar möchte ich eine GUI zu einem quasi Kopier/Umbenenn Programm für eine bestimmte Software schreiben.
Das Problem ist, dass man den Pfad ändern kann, in dem die Dateien liegen und ich über einen Refreshbutton(RefreshVesps) möchte, dass die RadioButtons der alten dateien verschwinden und die neuen hinzugefügt werden.
Die Dateinamen werden als RadioButtons dargestellt und automatisch bei programmstart eingefügt.
Ich habe es bereits mit validate(), repaint(), invalidate(), setvisivle(true/false) probiert, aber nichts hat geholfen.
Der Code meiner GUI Klasse ist wie folgt:
Ich habe anbei noch eine Grafik angehängt wie die GUI aussieht.
Zu sagen ist noch, dass ich kein Panel oder Container verwende, da ich mich ehrlichgesagt nicht über den Sinn von diesen Komponenten bewusst bin (auch nach mehreren Tutorials etc.).
Es wäre toll wenn ihr mir weiterhelfen könntet, ich hab daran gestern schon mindestens 5 Stunden verbracht.
Und zwar möchte ich eine GUI zu einem quasi Kopier/Umbenenn Programm für eine bestimmte Software schreiben.
Das Problem ist, dass man den Pfad ändern kann, in dem die Dateien liegen und ich über einen Refreshbutton(RefreshVesps) möchte, dass die RadioButtons der alten dateien verschwinden und die neuen hinzugefügt werden.
Die Dateinamen werden als RadioButtons dargestellt und automatisch bei programmstart eingefügt.
Ich habe es bereits mit validate(), repaint(), invalidate(), setvisivle(true/false) probiert, aber nichts hat geholfen.
Der Code meiner GUI Klasse ist wie folgt:
Java:
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
import java.util.*;
import java.util.Timer;
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();
final ArrayList <JRadioButton> JRButtons = new ArrayList <JRadioButton> (0);
JFrame frame = new JFrame("Vesp.imp Switcher");
Panel panel = new Panel();
Timer timer = new Timer();
String [] ICVersions = new String[2];
String sICVersion = "";
String sVespOrdner="";
String ConfigPath = System.getProperty("user.dir");;
String ICPath = "";
int iheight = 50;
public CreateWindow() throws IOException{
ICVersions[0] = "IC71";
ICVersions[1] = "IC72";
frame.setBounds(460, 230, 300, 350);
frame.setVisible(true);
panel.setLayout(null);
FileReader File = new FileReader("C:/Dokumente und Einstellungen/mallgaier/Desktop/Config.ini");
BufferedReader read = new BufferedReader(File);
String zeile = "";
while((zeile=read.readLine()) !=null ){
salGetConfig.add(zeile);
}
ICPath = salGetConfig.get(0);
sVespOrdner = salGetConfig.get(1);
}
public void Window() throws IOException{
final ImageIcon icon = new ImageIcon("C:/Dokumente und Einstellungen/mallgaier/Desktop/VespImpSwitcherLOGO.PNG") ;
final JLabel imageLabel = new JLabel(icon);
imageLabel.setBounds(60, 5, 178, 39);
frame.add(imageLabel);
final JButton JHelp = new JButton(new ImageIcon("C:/Dokumente und Einstellungen/mallgaier/Desktop/help.jpeg"));
JHelp.setBounds(10, 5, 35, 34);
frame.add(JHelp);
JHelp.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
}}
);
final JLabel MadeBy = new JLabel("Made by Max");
MadeBy.setBounds(112,300,80,20);
frame.add(MadeBy);
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(salGetConfig.get(1));
TFVespFolder.setBounds(115, 248, 175, 15);
frame.add(TFVespFolder);
TFVespFolder.addActionListener( new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
Program.getVespsIn(sVespOrdner);
}
} );
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{
TFSetPath.setText(ICPath+"/etc");
}
TFSetPath.updateUI();
}
else if(ICVersion.getSelectedIndex() == 1){
ICPath = System.getenv("Avaya_"+ICVersions[1]+"_HOME");
TFSetPath.setText(ICPath+"/etc");
TFSetPath.updateUI();
}
}
} );
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());
} 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++){
JRadioButton Test = JRButtons.get(i);
JRadioGroup.remove(Test);
frame.remove(Test);
}
JRButtons.clear();
JRadioGroup = new ButtonGroup();
refreshJRButtons();
frame.validate();
}
});
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);
for(int i =0;i<saNumRButtons.length;i++){
//erstellen des RButtons
JRadioButton RButton = new JRadioButton(saNumRButtons[i]);
RButton.setName(saNumRButtons[i]);
RButton.setBounds(150, iheight, 400, 20);
//hinzufügen des RButtons
JRButtons.add(RButton);
frame.add(RButton);
JRadioGroup.add(RButton);
//Höhenbestimmung + selection
iheight = iheight + 20;
if(RButton.getName().equals("Vesp.imp")||RButton.getName().equals("vesp.imp")){
RButton.setSelected(true);
}
}
}
}
Ich habe anbei noch eine Grafik angehängt wie die GUI aussieht.
Zu sagen ist noch, dass ich kein Panel oder Container verwende, da ich mich ehrlichgesagt nicht über den Sinn von diesen Komponenten bewusst bin (auch nach mehreren Tutorials etc.).
Es wäre toll wenn ihr mir weiterhelfen könntet, ich hab daran gestern schon mindestens 5 Stunden verbracht.
Zuletzt bearbeitet: