import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
@SuppressWarnings("serial")
public class mainfield extends JFrame implements ActionListener
{
//Definition von Variabeln
int line, angemeldet;
String accountname;
JFrame frameC;
JPanel chat;
JLabel labelM, lmelden, name, pw, pw2;
JTextField tfmessage, tfname;
JPasswordField tfpassword, tfpassword1;
JButton buttonS, buttonA, buttonR, login, erstelleAccount, back, btnNewButton;
TextArea output;
public mainfield() throws IOException{
//Deklarieren von Variabeln
angemeldet = 0;
//nun wird ausgelesen, welche Nummer die letzte Message hatte um alle folgenden zu senden
try{
FileReader fr = new FileReader("Chatübertragung.txt"); //Hier: Verweis zu Tausch!
BufferedReader br = new BufferedReader(fr);
line = Integer.valueOf(br.readLine());
br.close();
}catch(FileNotFoundException exp) {}
//nun wird das Fenster entworfen
frameC = new JFrame();
frameC.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameC.setTitle("Chat");
frameC.setSize(550, 635);
chat = new JPanel();
chat.setLayout(null);
//chatfeld
labelM = new JLabel("Nachricht:");
labelM.setFont(new Font("Tahoma", Font.PLAIN, 12));
labelM.setBounds(18, 367, 61, 14);
chat.add(labelM);
tfmessage = new JTextField("", 40);
tfmessage.setBounds(89, 364, 344, 20);
tfmessage.setForeground(Color.BLACK);
tfmessage.setBackground(Color.WHITE);
chat.add(tfmessage);
buttonS = new JButton("senden");
buttonS.setFont(new Font("Tahoma", Font.PLAIN, 12));
buttonS.setBounds(443, 363, 81, 23);
buttonS.addActionListener(this);
chat.add(buttonS);
//anmeldefeld
buttonA = new JButton("Anmelden");
buttonA.setFont(new Font("Tahoma", Font.PLAIN, 12));
buttonA.setBounds(119, 395, 122, 23);
buttonA.addActionListener(this);
chat.add(buttonA);
buttonR = new JButton("Registrieren");
buttonR.setFont(new Font("Tahoma", Font.PLAIN, 12));
buttonR.setBounds(275, 395, 122, 23);
buttonR.addActionListener(this);
chat.add(buttonR);
//meldefeld
lmelden = new JLabel("");
lmelden.setFont(new Font("Tahoma", Font.PLAIN, 12));
lmelden.setSize(506, 14);
lmelden.setLocation(18, 429);
chat.add(lmelden);
//outputfeld
output = new TextArea();
output.setBackground(Color.WHITE);
output.setEditable(false);
output.setBounds(18, 10, 506, 335);
chat.add(output);
//Einleitung des Users
output.setText("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
output.append("\nSchön, dass du meinen Chat nutzt!");
output.append("\n(By: Vincent Hilla V0.9)");
output.append("\nDies ist eine Alpha. Es können also Bugs auftreten.");
output.append("\nPasswörter sind noch nicht Imnplementiert. Bitte keine Namen stehlen!");
output.append("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
//Nun werden sachen definiert, die später gebraucht werden könnten aber vorerst unsichtbar sind
//label name
name = new JLabel("Name:");
name.setEnabled(false);
name.setFont(new Font("Tahoma", Font.PLAIN, 12));
name.setSize(45, 14);
name.setLocation(18, 700);
chat.add(name);
//textfeld tfname
tfname = new JTextField("", 40);
tfname.setFont(new Font("Tahoma", Font.PLAIN, 12));
tfname.setEnabled(false);
tfname.setSize(344, 20);
tfname.setLocation(89, 700);
tfname.setForeground(Color.BLACK);
tfname.setBackground(Color.WHITE);
chat.add(tfname);
//label pw
pw = new JLabel("Password:");
pw.setEnabled(false);
pw.setFont(new Font("Tahoma", Font.PLAIN, 12));
pw.setSize(61, 14);
pw.setLocation(18, 700);
chat.add(pw);
//passwordfeld tfpassword
tfpassword = new JPasswordField("", 40);
tfpassword.setFont(new Font("Tahoma", Font.PLAIN, 12));
tfpassword.setEnabled(false);
tfpassword.setSize(344, 20);
tfpassword.setLocation(89, 800);
tfpassword.setForeground(Color.BLACK);
tfpassword.setBackground(Color.WHITE);
chat.add(tfpassword);
//button login
login = new JButton("Login!");
login.setEnabled(false);
login.setSize(78, 23);
login.setLocation(219, 800);
login.setFont(new Font("Tahoma", Font.PLAIN, 12));
login.addActionListener(this);
chat.add(login);
//boutton back
back = new JButton("Back");
back.setFont(new Font("Tahoma", Font.PLAIN, 12));
back.setSize(81, 23);
back.setLocation(443, 700);
back.setEnabled(false);
back.addActionListener(this);
chat.add(back);
//label pw2
pw2 = new JLabel("wiederholen:");
pw2.setFont(new Font("Tahoma", Font.PLAIN, 12));
pw2.setEnabled(false);
pw2.setSize(72, 14);
pw2.setLocation(18, 800);
chat.add(pw2);
//passwordfeld tfpassword1
tfpassword1 = new JPasswordField("", 40);
tfpassword1.setFont(new Font("Tahoma", Font.PLAIN, 12));
tfpassword1.setSize(344, 20);
tfpassword1.setLocation(89, 800);
tfpassword1.setForeground(Color.BLACK);
tfpassword1.setBackground(Color.WHITE);
chat.add(tfpassword1);
//button erstelleAccount
erstelleAccount = new JButton("Registrieren");
erstelleAccount.setFont(new Font("Tahoma", Font.PLAIN, 12));
erstelleAccount.setEnabled(false);
erstelleAccount.setSize(98, 23);
erstelleAccount.setLocation(199, 800);
erstelleAccount.addActionListener(this);
chat.add(erstelleAccount);
//Fenster öffnen
frameC.getContentPane().add(chat);
frameC.setVisible(true);
while(true) {
act();
}
}
public void act() {
//durchgehender check, ob neue Nachrichten verfügbar und diese dann ausgeben
try{
try{
FileReader fr = new FileReader("Chatübertragung.txt"); //Hier: Verweis zu Tauschordner!
BufferedReader br = new BufferedReader(fr);
int newline = Integer.valueOf(br.readLine());
String message = br.readLine();
br.close();
if(newline > line) {
output.append("\n" + message);
line = newline;
}
}catch(IOException ioe) {}
}catch(NumberFormatException exp) {}
}
public void outputten() throws IOException, FileNotFoundException{
//wenn senden gedrückt
lmelden.setText("");
if(angemeldet == 1) {
if(tfmessage.getText() != null) {
//Nachricht senden
BufferedWriter bw = new BufferedWriter(new FileWriter("Chatübertragung.txt")); //Hier: Verweis zu Tausch!
int newline = line + 1;
bw.write("" + newline + "");
bw.newLine();
bw.write("[" + accountname + "]" + tfmessage.getText());
bw.close();
//Erstellen einer logdatei
BufferedWriter bwlog = new BufferedWriter(new FileWriter("Chatlog.txt", /*append*/ true)); //Hier: Verweis zu Tausch!
bwlog.newLine();
bwlog.write(newline + ": " + "[" + accountname + "]" + tfmessage.getText());
bwlog.close();
//Chatfeld leeren
tfmessage.setText("");
}
}else {
lmelden.setText("Du bist nicht angemeldet!");
chat.add(lmelden);
frameC.getContentPane().add(chat);
frameC.setVisible(true);
}
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource() == this.buttonS) {
try{
outputten();
}catch(IOException ioe) {}
}
if(ae.getSource() == this.buttonA) {
//alle Anmelde/Registrier/Fehlermedungsfelder enfernen
buttonA.setEnabled(false);
buttonR.setEnabled(false);
lmelden.setText("");
//Erstellen des Anmeldebereiches
//Erstellen des Namensfeldes
name.setEnabled(true);
name.setLocation(18, 452);
tfname.setEnabled(true);
tfname.setLocation(89, 449);
//Erstellen des Passwordfeldes
pw.setEnabled(true);
pw.setLocation(18, 486);
tfpassword.setEnabled(true);
tfpassword.setLocation(89, 483);
//Ok button
login.setEnabled(true);
login.setLocation(219, 515);
//back button
back.setEnabled(true);
back.setLocation(443, 450);
frameC.getContentPane().add(chat);
frameC.setVisible(true);
}
if(ae.getSource() == this.buttonR) {
//alle Anmelde/Registrier/Fehlermedungsfelder enfernen
buttonA.setEnabled(false);
buttonR.setEnabled(false);
lmelden.setText("");
//Erstellen des Registrierbereiches
//Erstellen des Namensfeldes
name.setEnabled(true);
name.setLocation(18, 452);
tfname.setEnabled(true);
tfname.setLocation(89, 449);
//Erstellen des Passwordfeldes
pw.setEnabled(true);
pw.setLocation(18, 486);
tfpassword.setEnabled(true);
tfpassword.setLocation(89, 483);
//Erstellen des Passwordwiederholen Feld
pw2.setEnabled(true);
pw2.setLocation(18, 520);
tfpassword1.setEnabled(true);
tfpassword1.setLocation(89, 517);
//Ok button
erstelleAccount.setEnabled(true);
erstelleAccount.setLocation(219, 548);
//back button
back.setEnabled(true);
back.setLocation(443, 450);
frameC.getContentPane().add(chat);
frameC.setVisible(true);
}
if(ae.getSource() == this.back) {
//unnötiges entfernen
try{
name.setEnabled(false);
tfname.setEnabled(false);
pw.setEnabled(false);
tfpassword.setEnabled(false);
login.setEnabled(false);
pw2.setEnabled(false);
tfpassword1.setEnabled(false);
erstelleAccount.setEnabled(false);
lmelden.setText("");
name.setLocation(18, 700);
tfname.setLocation(18, 700);
pw.setLocation(18, 700);
tfpassword.setLocation(18, 700);
login.setLocation(18, 700);
pw2.setLocation(18, 700);
tfpassword1.setLocation(18, 700);
erstelleAccount.setLocation(18, 700);
} catch(NullPointerException exp) {}
//anmeldefeld
buttonA.setEnabled(true);
buttonR.setEnabled(true);
back.setEnabled(false);
back.setLocation(18, 700);
frameC.getContentPane().add(chat);
frameC.setVisible(true);
}
if(ae.getSource() == this.login) {
lmelden.setText("");
if(String.valueOf(tfpassword.getPassword()).equals("") || tfname.getText().equals("")) {
lmelden.setText("Du musst bei Name und Passwort etwas eingeben!");
}else{
try{
try{
BufferedReader brA = new BufferedReader(new FileReader("Password.txt"));
String txtname = "nochnichts";
String txtpasswort;
while(!txtname.equals("")) {
txtname = brA.readLine();
txtpasswort = brA.readLine();
if(txtname.equals(tfname.getText()) && txtpasswort.equals(String.valueOf(tfpassword.getPassword()))) {
accountname = String.valueOf(tfname.getText());
angemeldet = 1;
name.setEnabled(false);
tfname.setEnabled(false);
pw.setEnabled(false);
tfpassword.setEnabled(false);
login.setEnabled(false);
pw2.setEnabled(false);
tfpassword1.setEnabled(false);
erstelleAccount.setEnabled(false);
back.setEnabled(false);
name.setLocation(18, 700);
tfname.setLocation(18, 700);
pw.setLocation(18, 700);
tfpassword.setLocation(18, 700);
login.setLocation(18, 700);
pw2.setLocation(18, 700);
tfpassword1.setLocation(18, 700);
erstelleAccount.setLocation(18, 700);
back.setLocation(18, 700);
buttonA.setLocation(18, 700);
buttonR.setLocation(18, 700);
}
}
if(angemeldet == 0) { //FEHLER Wird nie ausgeführt (auch kein else)
lmelden.setText("Die Anmeldedaten funktionieren nicht!");
}
brA.close();
}catch(IOException ioe) {}
}catch(NullPointerException npx) {}
}
}
if(ae.getSource() == this.erstelleAccount) {
lmelden.setText("");
try{
try{
if(String.valueOf(tfpassword.getPassword()).equals("") || tfname.getText().equals("")) {
lmelden.setText("Du musst bei Name und Passwort etwas eingeben!");
}else{
if(String.valueOf(tfpassword.getPassword()).equals(String.valueOf(tfpassword1.getPassword()))) {
BufferedReader brR = new BufferedReader(new FileReader("Password.txt"));
String txtname = "nochnichts";
while(!txtname.equals("")) {
txtname = brR.readLine();
brR.readLine();
if(txtname.equals(tfname.getText())) {
lmelden.setText("Name bereits vergeben!");
}
}
if(!lmelden.getText().equals("Name bereits vergeben!")) { //FEHLER wird nicht ausgeführt (auch else nicht)
BufferedWriter bwR = new BufferedWriter(new FileWriter("Password.txt", /*append*/ true));
bwR.newLine();
bwR.write(tfname.getText());
bwR.newLine();
bwR.write(String.valueOf(tfpassword.getPassword()));
bwR.close();
accountname = tfname.getText();
angemeldet = 1;
name.setEnabled(false);
tfname.setEnabled(false);
pw.setEnabled(false);
tfpassword.setEnabled(false);
login.setEnabled(false);
pw2.setEnabled(false);
tfpassword1.setEnabled(false);
erstelleAccount.setEnabled(false);
back.setEnabled(false);
name.setLocation(18, 700);
tfname.setLocation(18, 700);
pw.setLocation(18, 700);
tfpassword.setLocation(18, 700);
login.setLocation(18, 700);
pw2.setLocation(18, 700);
tfpassword1.setLocation(18, 700);
erstelleAccount.setLocation(18, 700);
back.setLocation(18, 700);
buttonA.setLocation(18, 700);
buttonR.setLocation(18, 700);
}
brR.close();
}else{
lmelden.setText("Die Passwörter stimmen nicht überein!");
}
}
}catch(NullPointerException npe) {}
}catch(IOException ioe) {}
}
}
public static void main(String[] args) {
try{
mainfield chatter = new mainfield();
chatter.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
//Folgender teil funktioniert nicht
//schreibe ich hier System.out.println("test"); würde das ausgeführt werden
String test1 ="Eins";
String test2 ="Zwei";
if(!test1.equalsIgnoreCase(test2)){
System.out.println("Inhalte test1 und test2 sind ungleich!");
}
else{
System.out.println("Inhalte test1 und test2 sind gleich!");
}
}
}
}