[Java]public class GUI extends JFrame {
// Von Eclipse Automatisch erstellt
private static final long serialVersionUID = -4266458798483514213L;
public class Panel extends JPanel implements ActionListener {
// Instanzvariablen der inneren Klasse deklarieren
private JLabel text;
private JTextField eingabe;
private JButton anzeigen, speichern, beenden;
private Image img;
private Background liste;
// Der Konstruktor der inneren Klasse
public Panel(String titel) {
try {
img = ImageIO.read(getClass().getResource("papier.jpg"));
} catch (IOException e) {
e.printStackTrace();
System.out.println("Das Bild wurden nicht gefunden");
}
setLayout(null);
text = new JLabel("<html>Willkommen im Editor der Wörterliste Bitte geben Sie ein neues Wort ein</html>");
text.setBounds(140, 50, 230, 90);
eingabe = new JTextField();
eingabe.setBounds(100, 150, 300, 30);
anzeigen = new JButton("Anzeigen");
anzeigen.setBounds(50, 220, 100, 30);
speichern = new JButton("Speichern");
speichern.setBounds(200, 220, 100, 30);
beenden = new JButton("Beenden");
beenden.setBounds(350, 220, 100, 30);
// Die Buttons und Labels werden den JPanel zugeordnet
add(text);
add(eingabe);
add(anzeigen);
add(speichern);
add(beenden);
// Die Buttons werden dem Listener zugeordnet
anzeigen.addActionListener(this);
speichern.addActionListener(this);
beenden.addActionListener(this);
//
// Größe setzen, Sichtbarkeit aktivieren, größenänderung abschalten,
setSize(500, 300);
liste = new Background();
//Background suchwort = new Background();
setVisible(true);
setResizable(false);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, this);
}
public Image getBackgroundImage() {
return img;
}
// Die Methode für den Abruf
@Override
public void actionPerformed(ActionEvent e) {
Background.Editor test = liste.new Editor();
String wort = eingabe.getText();
if (e.getSource() == anzeigen) {
//Background suchwort = new Background();
test.datenLesen();
}
if (e.getSource() == speichern) {
test.setzeWort(wort);
eingabe.setText(null);
}
if (e.getSource() == beenden) {
System.exit(0);
}
}
}
// Der Konstruktor
public GUI(String titel) {
super(titel);
Panel backgroundPanel = new Panel(titel);
add(backgroundPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(backgroundPanel.getBackgroundImage().getWidth(backgroundPanel), backgroundPanel.getBackgroundImage().getHeight(backgroundPanel));
// Für die Optik: Bildschirmgröße bestimmen, Speichern und mittig ausrichten
Dimension bGroesse = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((bGroesse.width - getSize().width) / 2, (bGroesse.height - getSize().height) / 2);
setVisible(true);
}
} [/Java]
[Java]public class Background extends JFrame {
private Editor test;
private static final long serialVersionUID = -4108625137157275652L;
public class Editor extends JPanel{
// Instanzvariablen für die eigentliche Liste deklarieren
private Liste [] wortliste;
private JLabel spalte1, spalte2;
private String dateiWort;
private int anzahl;
private int nummer;
private Image img;
// Die 2te innere Klasse für die Liste
public class Liste implements Comparable<Liste>{
// Die Instanzvariablen
private int listeNummer;
private String listeWort;
// Der Konstruktor der 2ten inneren Klasse Liste
// Er ruft die Methode setzeEintrag() auf
public Liste (int listeNummer, String listeWort){
setzeEintrag(listeNummer, listeWort);
}
// Die überschriebene Vergleichsmethode
// Der Rückgabewert steuert die Sortierung
@Override
public int compareTo(Liste tempList){
if (this.listeWort.equals("???"))
return 1;
if (this.listeWort == tempList.listeWort)
return -1;
else
return -1;
}
// Die Methode setze Einträge in der Liste
public void setzeEintrag (int listeNummer, String listeWort){
this.listeWort = listeWort;
//if (listeNummer == this.listeNummer)
this.listeNummer = listeNummer;
}
// Die Methode setzt das Wort
public void setzeWort (String listeWort){
this.listeWort = listeWort;
}
// Die Methode liefert die Eintragsnummer
public int getListeNummer(){
return listeNummer;
}
// Die Methode liefert das Wort
public String getListeWort(){
return listeWort;
}
}
// Der Konstruktor der ersten inneren Klasse
public Editor (){
// Die Wortliste hat 20 Eintrage
anzahl = 20;
// Eine neue Instanz für die wortliste erzeugen
wortliste = new Liste[anzahl];
// Die Elemente initialisieren
for (int index = 0; index < anzahl; index++){
nummer ++;
wortliste[index] = new Liste(nummer,"???");
}
nummer = 0;
// Initialisierung von dateiName
dateiWort = "wortliste.dat";
// Test ob Datei "wortliste.dat" vorhanden
File dateiTest = new File(dateiWort);
// Wenn Datei "wortliste.dat" vorhanden, Datei einlesen
if (dateiTest.exists()== true)datenLesen();
setLayout(new GridLayout(0,2));
spalte1 = new JLabel("Nummer");
spalte2 = new JLabel("Wort");
// JLabels dem JPanel zuordnen
add(spalte1);
add(spalte2);
try{
img = ImageIO.read(getClass().getResource("papier2.jpg"));
}catch(IOException e){
e.printStackTrace(); System.out.println("Das Bild wurde nicht gefunden");
}
// Sichtbarkeit aktivieren, größenänderung abschalten
setVisible (true);
setResizable(false);
}
public void datenLesen(){
// Zum leichteren Verarbeiten
String tempWort;
int tempNummer;
// Die Datei zum Lesen öffen
try (RandomAccessFile datei = new RandomAccessFile(dateiWort, "r")){
// Die Daten aus der Datei lesen
for (int index = 0; index < anzahl; index++){
//erst die Nummer
tempNummer = datei.readInt();
// Dann die Wörter
tempWort = datei.readUTF();
// und nun zuweisen
wortliste[index].setzeEintrag(tempNummer, tempWort);
}
}
catch (IOException e){
JOptionPane.showMessageDialog(this, "Beim Laden der Bestenliste ist ein Problem aufgetreten");
}
}
public void setzeWort (String wort){
String tempWort;
nummer ++;
if (nummer < wortliste[anzahl-1].getListeNummer()){
tempWort = wort;
if (tempWort == null)
tempWort = "Leer";
// Den neuen Eintrag setzen
wortliste[anzahl-1].setzeWort(tempWort);
// Die Liste sortieren
Arrays.sort(wortliste);
datenSchreiben();
System.out.println("Haribol " + wort);
}
}
// Die Methode schreibt die Bestenliste komplett in eine binäre Datei wortliste.dat
public void datenSchreiben(){
// Die Datei zum Lesen und Schreiben öffnen
try (RandomAccessFile datei = new RandomAccessFile(dateiWort,"rw")){
// Die Daten in die Datei schreiben
for (int index = 0; index < anzahl; index++){
// Erst die Punkte
datei.writeInt(wortliste[index].getListeNummer());
// Dann den Namen
datei.writeUTF(wortliste[index].getListeWort());
}
}
catch (IOException e){
JOptionPane.showMessageDialog(this,"Beim Schreiben der Bestenliste ist ein Problem aufgetreten");
}
}
// Die Methode liest die Bestenliste komplett aus einer binären Datei wortliste.dat
@Override
protected void paintComponent (Graphics g){
super.paintComponent(g);
g.drawImage(img, 0, 0, this);
datenLesen();
System.out.println("yuhu repaint");
for (int index = 0; index < anzahl; index++){
add(new JLabel(Integer.toString(wortliste[index].getListeNummer())));
add(new JLabel(wortliste[index].getListeWort()));
System.out.println("yuhu repaint");
}
}
public Image getBackgroundImage() {
return img;
}
}
// Der Konstruktor der Hauptklasse
public Background (){
test = new Editor();
add(test);
setSize (test.getBackgroundImage().getWidth(test),test.getBackgroundImage().getHeight(test));
setVisible(true);
}
}
[/Java]
Guten Abend
Ich habe für mich eine größe und für euch warscheinlich eine kleine Herrausforderung.
Ich versuche einen Wortlisteneditor zu erstellen, dieser ist erschaffen, doch seine funktion ist noch unvollkommen.
Er besteht aus 2 Hauptklassen (GUI und Background)
GUI hat noch eine innere Klasse Panel und
Backgroung hat 2 innere Klassen Editor und Liste.
Die Steuernde Hauptklasse arbeitet wie Sie soll allerdings gibt es etwas was mir noch nicht einleuchtet.
Wenn ich die Klasse Background 1x initialisiere erscheinen nur die JLabels Nummer und Wort
Wenn ich die Klasse Background 2x initialisiere wird mir die Wortliste auch angezeigt.
Welche änderungen und Anpassungen an meinem Quellcode sind erforderlich damit die Wortliste schon bei einer Initialisierung aufgerufen wird??
Und wie kann ich die aktualisierte Liste mit repaint aktuell anzeigen und erneuern??:noe:
// Von Eclipse Automatisch erstellt
private static final long serialVersionUID = -4266458798483514213L;
public class Panel extends JPanel implements ActionListener {
// Instanzvariablen der inneren Klasse deklarieren
private JLabel text;
private JTextField eingabe;
private JButton anzeigen, speichern, beenden;
private Image img;
private Background liste;
// Der Konstruktor der inneren Klasse
public Panel(String titel) {
try {
img = ImageIO.read(getClass().getResource("papier.jpg"));
} catch (IOException e) {
e.printStackTrace();
System.out.println("Das Bild wurden nicht gefunden");
}
setLayout(null);
text = new JLabel("<html>Willkommen im Editor der Wörterliste Bitte geben Sie ein neues Wort ein</html>");
text.setBounds(140, 50, 230, 90);
eingabe = new JTextField();
eingabe.setBounds(100, 150, 300, 30);
anzeigen = new JButton("Anzeigen");
anzeigen.setBounds(50, 220, 100, 30);
speichern = new JButton("Speichern");
speichern.setBounds(200, 220, 100, 30);
beenden = new JButton("Beenden");
beenden.setBounds(350, 220, 100, 30);
// Die Buttons und Labels werden den JPanel zugeordnet
add(text);
add(eingabe);
add(anzeigen);
add(speichern);
add(beenden);
// Die Buttons werden dem Listener zugeordnet
anzeigen.addActionListener(this);
speichern.addActionListener(this);
beenden.addActionListener(this);
//
// Größe setzen, Sichtbarkeit aktivieren, größenänderung abschalten,
setSize(500, 300);
liste = new Background();
//Background suchwort = new Background();
setVisible(true);
setResizable(false);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(img, 0, 0, this);
}
public Image getBackgroundImage() {
return img;
}
// Die Methode für den Abruf
@Override
public void actionPerformed(ActionEvent e) {
Background.Editor test = liste.new Editor();
String wort = eingabe.getText();
if (e.getSource() == anzeigen) {
//Background suchwort = new Background();
test.datenLesen();
}
if (e.getSource() == speichern) {
test.setzeWort(wort);
eingabe.setText(null);
}
if (e.getSource() == beenden) {
System.exit(0);
}
}
}
// Der Konstruktor
public GUI(String titel) {
super(titel);
Panel backgroundPanel = new Panel(titel);
add(backgroundPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(backgroundPanel.getBackgroundImage().getWidth(backgroundPanel), backgroundPanel.getBackgroundImage().getHeight(backgroundPanel));
// Für die Optik: Bildschirmgröße bestimmen, Speichern und mittig ausrichten
Dimension bGroesse = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((bGroesse.width - getSize().width) / 2, (bGroesse.height - getSize().height) / 2);
setVisible(true);
}
} [/Java]
[Java]public class Background extends JFrame {
private Editor test;
private static final long serialVersionUID = -4108625137157275652L;
public class Editor extends JPanel{
// Instanzvariablen für die eigentliche Liste deklarieren
private Liste [] wortliste;
private JLabel spalte1, spalte2;
private String dateiWort;
private int anzahl;
private int nummer;
private Image img;
// Die 2te innere Klasse für die Liste
public class Liste implements Comparable<Liste>{
// Die Instanzvariablen
private int listeNummer;
private String listeWort;
// Der Konstruktor der 2ten inneren Klasse Liste
// Er ruft die Methode setzeEintrag() auf
public Liste (int listeNummer, String listeWort){
setzeEintrag(listeNummer, listeWort);
}
// Die überschriebene Vergleichsmethode
// Der Rückgabewert steuert die Sortierung
@Override
public int compareTo(Liste tempList){
if (this.listeWort.equals("???"))
return 1;
if (this.listeWort == tempList.listeWort)
return -1;
else
return -1;
}
// Die Methode setze Einträge in der Liste
public void setzeEintrag (int listeNummer, String listeWort){
this.listeWort = listeWort;
//if (listeNummer == this.listeNummer)
this.listeNummer = listeNummer;
}
// Die Methode setzt das Wort
public void setzeWort (String listeWort){
this.listeWort = listeWort;
}
// Die Methode liefert die Eintragsnummer
public int getListeNummer(){
return listeNummer;
}
// Die Methode liefert das Wort
public String getListeWort(){
return listeWort;
}
}
// Der Konstruktor der ersten inneren Klasse
public Editor (){
// Die Wortliste hat 20 Eintrage
anzahl = 20;
// Eine neue Instanz für die wortliste erzeugen
wortliste = new Liste[anzahl];
// Die Elemente initialisieren
for (int index = 0; index < anzahl; index++){
nummer ++;
wortliste[index] = new Liste(nummer,"???");
}
nummer = 0;
// Initialisierung von dateiName
dateiWort = "wortliste.dat";
// Test ob Datei "wortliste.dat" vorhanden
File dateiTest = new File(dateiWort);
// Wenn Datei "wortliste.dat" vorhanden, Datei einlesen
if (dateiTest.exists()== true)datenLesen();
setLayout(new GridLayout(0,2));
spalte1 = new JLabel("Nummer");
spalte2 = new JLabel("Wort");
// JLabels dem JPanel zuordnen
add(spalte1);
add(spalte2);
try{
img = ImageIO.read(getClass().getResource("papier2.jpg"));
}catch(IOException e){
e.printStackTrace(); System.out.println("Das Bild wurde nicht gefunden");
}
// Sichtbarkeit aktivieren, größenänderung abschalten
setVisible (true);
setResizable(false);
}
public void datenLesen(){
// Zum leichteren Verarbeiten
String tempWort;
int tempNummer;
// Die Datei zum Lesen öffen
try (RandomAccessFile datei = new RandomAccessFile(dateiWort, "r")){
// Die Daten aus der Datei lesen
for (int index = 0; index < anzahl; index++){
//erst die Nummer
tempNummer = datei.readInt();
// Dann die Wörter
tempWort = datei.readUTF();
// und nun zuweisen
wortliste[index].setzeEintrag(tempNummer, tempWort);
}
}
catch (IOException e){
JOptionPane.showMessageDialog(this, "Beim Laden der Bestenliste ist ein Problem aufgetreten");
}
}
public void setzeWort (String wort){
String tempWort;
nummer ++;
if (nummer < wortliste[anzahl-1].getListeNummer()){
tempWort = wort;
if (tempWort == null)
tempWort = "Leer";
// Den neuen Eintrag setzen
wortliste[anzahl-1].setzeWort(tempWort);
// Die Liste sortieren
Arrays.sort(wortliste);
datenSchreiben();
System.out.println("Haribol " + wort);
}
}
// Die Methode schreibt die Bestenliste komplett in eine binäre Datei wortliste.dat
public void datenSchreiben(){
// Die Datei zum Lesen und Schreiben öffnen
try (RandomAccessFile datei = new RandomAccessFile(dateiWort,"rw")){
// Die Daten in die Datei schreiben
for (int index = 0; index < anzahl; index++){
// Erst die Punkte
datei.writeInt(wortliste[index].getListeNummer());
// Dann den Namen
datei.writeUTF(wortliste[index].getListeWort());
}
}
catch (IOException e){
JOptionPane.showMessageDialog(this,"Beim Schreiben der Bestenliste ist ein Problem aufgetreten");
}
}
// Die Methode liest die Bestenliste komplett aus einer binären Datei wortliste.dat
@Override
protected void paintComponent (Graphics g){
super.paintComponent(g);
g.drawImage(img, 0, 0, this);
datenLesen();
System.out.println("yuhu repaint");
for (int index = 0; index < anzahl; index++){
add(new JLabel(Integer.toString(wortliste[index].getListeNummer())));
add(new JLabel(wortliste[index].getListeWort()));
System.out.println("yuhu repaint");
}
}
public Image getBackgroundImage() {
return img;
}
}
// Der Konstruktor der Hauptklasse
public Background (){
test = new Editor();
add(test);
setSize (test.getBackgroundImage().getWidth(test),test.getBackgroundImage().getHeight(test));
setVisible(true);
}
}
[/Java]
Guten Abend
Ich habe für mich eine größe und für euch warscheinlich eine kleine Herrausforderung.
Ich versuche einen Wortlisteneditor zu erstellen, dieser ist erschaffen, doch seine funktion ist noch unvollkommen.
Er besteht aus 2 Hauptklassen (GUI und Background)
GUI hat noch eine innere Klasse Panel und
Backgroung hat 2 innere Klassen Editor und Liste.
Die Steuernde Hauptklasse arbeitet wie Sie soll allerdings gibt es etwas was mir noch nicht einleuchtet.
Wenn ich die Klasse Background 1x initialisiere erscheinen nur die JLabels Nummer und Wort
Wenn ich die Klasse Background 2x initialisiere wird mir die Wortliste auch angezeigt.
Welche änderungen und Anpassungen an meinem Quellcode sind erforderlich damit die Wortliste schon bei einer Initialisierung aufgerufen wird??
Und wie kann ich die aktualisierte Liste mit repaint aktuell anzeigen und erneuern??:noe: