import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.ScrollPane;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
public class Frame extends JFrame{
static JPanel[] tabContent;
static String[] tabName = {"Startseite","Deckblatt","Aufgaben","Fragen","Arbeitsplan","Prüfplan","Stückliste","Anhang"};
static JTextField speicherortt = new JTextField();// Speicherpfad soll angegeben werden
static JTextField uberschriftt = new JTextField();
static JTextField unteruberschrift1t = new JTextField();
static JTextField unteruberschrift2t = new JTextField();
static JTextField bild1t = new JTextField();
static JTextField bildunterschriftt = new JTextField();
static JButton bild1b = new JButton("Durchsuchen..");//Öffnen von JFileChooser der das ergebnis in das Textfield reinschreibt
static JTextField bild2t = new JTextField();
static final int anzFragen = 8;
private static final Component JScrollPane = null;
static JTextField[]frageEin = new JTextField[anzFragen];
static JTextArea[] antwortEin = new JTextArea[anzFragen];
// ich hab mal die Grundlegenden sachen definiert und dein programm etwas abgekürzt und verändert tabs sind oben da wir mehr platz brauchen werden
// versuch mal das Positionieren und ausarbeiten von dem Code bei den Algorythmen für Action bzw ItemListener und so kann ich dir auch gern helfen
// Ich schicks dir einfch mal per Email weil ich des sonst eh vergessen werde... blablabla ende der beschreibung und so.
public Frame(){
setSize(700, 500);
setLayout(new GridLayout(1,1));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Test");
setResizable(false);
setAlwaysOnTop(true);
// Menü: öffnen, speichern, schließen
JMenuBar menue = new JMenuBar();
JMenu menu = new JMenu("Datei");
JMenuItem open = new JMenuItem("Datei öffnen");
JMenuItem save = new JMenuItem("Datei speichern");
JMenuItem close = new JMenuItem("Schließen");
menu.add(open);
menu.add(save);
menu.add(close);
//ich lasse Leerzeilen
//damit es kurzzeitig leichter wird für mich zu
//orientieren.
//Grundlegende erstellung der Tabs
JTabbedPane tabpane = new JTabbedPane
(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT );
tabContent = new JPanel[tabName.length];
for(int i = 0; i<tabName.length; i++){
tabContent[i]=new JPanel();
tabpane.addTab(tabName[i], tabContent[i]);
tabContent[i].setLayout(null);
}
//SpeicherortSeite
JLabel speicherortl = new JLabel("Speicherort angeben: ");//t = text,b = button und l = label stehen für die jeweiligen objekte damit man später besser damit arbeiten kann
speicherortl.setBounds(0, 0, 200, 20);
tabContent[0].add(speicherortl);
JButton speicherortb = new JButton("Durchsuchen..");//Öffnen von JFileChooser der das ergebnis in das Textfield reinschreibt
speicherortb.setBounds(290,30,130,30);
tabContent[0].add(speicherortb);
speicherortt.setBounds(0,30,280,30);
tabContent[0].add(speicherortt);
speicherortb.addActionListener(new SearchListener(speicherortt));
JLabel beschreibung = new JLabel(); //Hier sollte villeicht eine art beschreibung angegeben werden wie das Programm funktioniert
beschreibung.setText("<html>Sie tragen die benötigten Komponenten, d.h. die verschiedenen Überschriften und Aufgaben in die dafür vorhergesehenen Textfelder ein. <p/> "+
"Eine genauere Beschreibung des jeweiligen Tabs finden Sie am Tab.</html>");
beschreibung.setBounds(0, 50, 500, 100);
tabContent[0].add(beschreibung);
//Weitere Elemente...
//Positionierung ...
//Ende Speicherortseite
//Deckblatt
JLabel uberschriftl = new JLabel("Überschrift: ");//Namen und so noch anpassen Unterüberschrift 1 und so kann man nicht so lassen ^^
uberschriftl.setBounds(0, 0, 180, 15);
tabContent[1].add(uberschriftl);
uberschriftt.setBounds(0,20,420,30);
tabContent[1].add(uberschriftt);
JLabel unteruberschrift1l = new JLabel("Unterüberschrift : ");
unteruberschrift1l.setBounds(0, 55, 180,15);
tabContent[1].add(unteruberschrift1l);
unteruberschrift1t.setBounds(0,75,420,30);
tabContent[1].add(unteruberschrift1t);
JLabel unteruberschrift2l = new JLabel("Ausbildungsrichtung/ - jahr: ");
unteruberschrift2l.setBounds(0,110,180,15);
tabContent[1].add(unteruberschrift2l);
unteruberschrift2t.setBounds(0,130,420,30);
tabContent[1].add(unteruberschrift2t);
JLabel bild1l = new JLabel("Speicherort angeben: ");//Bild auswählen für Deckblatt
bild1l.setBounds(0,165,180,15);
tabContent[1].add(bild1l);
bild1t.setBounds(0, 185, 280, 30);
tabContent[1].add(bild1t);
bild1b.setBounds(290, 185, 130, 30);
tabContent[1].add(bild1b);
bild1b.addActionListener(new SearchListener(bild1t));
JLabel bildunterschriftl = new JLabel("Bildunterschrift: ");
tabContent[1].add(bildunterschriftl);
bildunterschriftl.setBounds(0,220,180,20);
bildunterschriftt.setBounds(0, 245, 420, 30);
tabContent[1].add(bildunterschriftt);
tabContent[1].add(bildunterschriftl);
JLabel beschrDeck = new JLabel(""); // Beschreibung des Tabs .. das Wort Unterübeschrift bitte noch ändern!
beschrDeck.setText("<html>Dieser Tab legt das Thema des Gehäfts fest. <p/> "+
"Zuerst wird die Überschrift, welche auf gleichzeitig das Thema des Gehäfts ist festgelegt, danach wird eine Unterüberschrift beschrieben. Als nächstes kommt die Art der Ausbildung und für welches Ausbildungsjahr dieses Gehäft gedacht ist.</p>" +
"Folgend legt man ein Bild fest, welches das Thema veranschaulichen soll. Darunter kommt eine Bildunterschrift, welche das Bild näher beschreibt.</html>");
beschrDeck.setBounds(0,290,500,100);
tabContent[1].add(beschrDeck);
//Ende Deckblatt
//AufgabeSeite
JLabel aufgabel = new JLabel("Aufgabe: ");
JTextField aufgabet = new JTextField();
JLabel zeichnungl = new JLabel("Zeichnung: ");
JTextField zeichnungt = new JTextField();
JLabel mindestanforderungl = new JLabel("Mindestanforderung: ");
JTextField mindestanforderungt = new JTextField();
JLabel qualifikationenl = new JLabel("Qualifikationen: ");//Label links und rechts davon ein dropdownmenü bei dem man einstellen kann wie viel "TextFields" unten angezeigt werden für qualifikationen
JTextField qualifikationent[];//Anzahl der qualifikationen
JComboBox qualifikationenc;//Erstellung des DropdownMenüs
String[] dropdownAuswahl = new String[26];//Ich hoffe es funktioniert^^
for(int i = 0; i<dropdownAuswahl.length-1; i++){
dropdownAuswahl[(i<25)?i+1:i]=""+(i+1);
}
dropdownAuswahl[0]="Anzahl";
qualifikationenc = new JComboBox(dropdownAuswahl);//Hier kein ActionListener sondern ein ItemListener!!!
//Evtl noch mit JScrollPane versehen wenn es zu viele Elemente sind
//Ende AufgabeSeite
//Fragenseiten
//Es sind immer 8 Fragen!
JLabel[] frage = new JLabel[anzFragen];
JLabel[] antwort = new JLabel[anzFragen ];
for(int i = 0; i< anzFragen; i++){
frage[i] = new JLabel("Frage "+(i+1)+":");
frageEin[i] = new JTextField();
antwort[i] = new JLabel("Antwort "+(i+1)+":");
antwortEin[i] = new JTextArea();
frage[i].setBounds(0,i*150,50,20); //Algorythmus zur positionierung
frageEin[i].setBounds(0,i*150+25,600,30);
antwort[i].setBounds(0,i*150+60,80,20);
antwortEin[i].setBounds(0,i*150+85,600,50);
// positionierung der Fragen nur zu Testzwecken.. kommt aber aufs gleiche raus.
tabContent[3].add(frage[i]);
tabContent[3].add(frageEin[i]);
tabContent[3].add(antwort[i]);
tabContent[3].add(antwortEin[i]);
}
JPanel scrollPanel = new JPanel();
scrollPanel.setLayout(null);
scrollPanel.setBounds(0, 0, 700, 1000);
// scrollPanel.setBackground(Color.green);
scrollPanel.setPreferredSize(new Dimension(700, 1000));
scrollPanel.setMinimumSize(new Dimension(700, 1000));
JScrollPane scrolls=new JScrollPane(scrollPanel,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrolls.setBounds(0, 0, 690, 420);
tabContent[3].add(scrolls);
//Diese dann mit einem Algorytmus Positionieren geht evtl schon in der for schleife
//Ende FragenSeiten
//ArbeitsPlan
final int anzAufgaben = 10; //10 ist noch nicht save deshalb mach ichs mit na variable dann kann man es leicht anpassen
//Die anordung machst du villt mit tabellenlikeansicht ->frag einfach mich ^^ das spart in dem fall viel platz
JTextField[] arbeitsGang = new JTextField[anzAufgaben];//Evtl einige durch JTextArea ersetzen da bei Werkzeuge,Prüfmittel ziemlich viel text ist
JTextField[] werkzeuge = new JTextField[anzAufgaben];
JTextField[] zeitMin = new JTextField[anzAufgaben];
JLabel[] lfdNummer = new JLabel[anzAufgaben];
for(int i = 0; i<anzAufgaben; i++){//links zur besseren orientierung
lfdNummer[i] = new JLabel(""+i);
arbeitsGang[i]=new JTextField();
werkzeuge[i]=new JTextField();
zeitMin[i]=new JTextField();
}
JLabel arbeitsgang = new JLabel("Arbeitsgänge");//Oben erste reihe
JLabel werkzeug = new JLabel("Werkzeuge, Prüfmittel");
JLabel zeit = new JLabel("Arbeitszeit");
//ab 2te Reihe
//Positionieren von arbeitsGang,werkzeuge und zeitMin Tabellenlike
//Ende Arbeitsplan
//Stückliste
//Ende Stückliste
//Prüfplan
//Hier weiß ich noch nicht genau welche eingaben man bekommen soll -> Falge fragen und so ^^
//Ende Prüfplann
//Anhang
JLabel anhangNamel = new JLabel("Anhang: ");
JTextField anhangNamet = new JTextField();
JLabel bild2l = new JLabel("Speicherort angeben: ");//Bild auswählen
bild2l.setBounds(0, 0, 150, 20);
tabContent[6].add(bild2l);
JButton bild2b = new JButton("Durchsuchen..");//Öffnen von JFileChooser der das ergebnis in das Textfield reinschreibt
bild2b.setBounds(290,25,130,30);
tabContent[6].add(bild2b);
bild2t.setBounds(0,25,280,30);
tabContent[6].add(bild2t);
bild2b.addActionListener(new SearchListener(bild2t));
JLabel beschrNr6 = new JLabel();
beschrNr6.setText("<html>In diesem Tab wird das Bild vom Anhang geladen. <p/> "+
"Anschließend kontrollieren Sie die Daten nochmal und drücken, wenn alles passt, damit das Dokument erstellt werden kann.</html>");
beschrNr6.setBounds(0,50,500,100);
tabContent[6].add(beschrNr6);
JButton ok = new JButton("ok"); // Button zum speichern des Programms, der Strings usw.
ok.setBounds(0,170,50,50);
tabContent[6].add(ok);
//Ende Anhang
menue.add(menu);
setJMenuBar(menue);
add(tabpane);
setVisible(true);
}
public String pfadAuswahl(){
JFileChooser fileChooser = new JFileChooser();
int result = fileChooser.showOpenDialog(fileChooser);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
return selectedFile.getAbsolutePath();}
return null;
}
}