Hej alle!
- Jeg er igang med at lave en chat klient. Har mere eller mindre lavet layoutet, nu mangler jeg bare at kunne få flere klienter til at kommunikere. Jeg ville godt prøve at sætte en server op på min router og lade det hele kommunikere over den. Hvordan skal jeg gøre det?
Har ingen erfaring, så bare så meget som et API jeg kan bruge, eller en hjemmeside tut eller noget lign. ville jeg værdsætte! Jeg ved heller ikke hvordan jeg skulle sætte min router op. Det skal bare være LAN til at starte med.
- Jeg har også problemer med min kode lige her:
- public void enterStages()
- {
- if(bmenu)
- {
- try
- {
- this.remove(chat);
- }
- catch(Exception e){}
- System.out.println("Enters menu stage");
- this.add(menu);
- }
- else if(bchat)
- {
- try
- {
- this.remove(menu);
- }
- catch(Exception e){}
- System.out.println("Enters the chat stage");
- this.add(chat);
- }
Første gang den metode bliver kaldt er bmenu == true. Der virker det hele fint. Men når så bchat == true, så får jeg problemer. Elementerne/komponenterne i det JPanel bliver ikke vist, medmindre jeg resizer vinduet manuelt.. What to do? o.o
Her er alt min kode:
Main.Main.java
- package Main;
-
- public class Main
- {
-
- public static void main(String[] args)
- {
- Window.Frame lol = new Window.Frame();
- }
-
- }
Window.Frame.java
- package Window;
-
- import javax.swing.*;
- import java.awt.*;
-
- public class Frame extends JFrame
- {
- public static int windowx, windowy;
-
- public ChatPanel chat;
- public Menu menu;
-
- public static boolean bchat, bmenu;
-
- public Frame()
- {
- init();
-
- this.setSize(windowx, windowy);
- this.setVisible(true);
- this.setDefaultCloseOperation(EXIT_ON_CLOSE);
- this.setBackground(Color.BLACK);
-
- }
-
- public void init()
- {
- windowx = 800;
- windowy = 600;
-
- menu = new Menu(this);
- chat = new ChatPanel();
-
- bmenu = true;
-
- enterStages();
- }
-
- /*
- * Method that handles what stage the user's in. This is done with the boolean variables bmenu and bchat.
- */
- public void enterStages()
- {
- if(bmenu)
- {
- try
- {
- this.remove(chat);
- }
- catch(Exception e){}
- System.out.println("Enters menu stage");
- this.add(menu);
- }
- else if(bchat)
- {
- try
- {
- this.remove(menu);
- }
- catch(Exception e){}
- System.out.println("Enters the chat stage");
- this.add(chat);
- }
- }
-
-
- }
Window.Menu.java
- package Window;
-
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
-
- public class Menu extends JPanel
- {
- JTextField nameInput;
- JTextArea desc;
- JButton enter;
- JButton exit;
- Frame frame;
-
- public Menu(final Frame frame) // Final cause if not, we get an error XD
- {
- this.frame = frame;
-
- this.setLayout(null);
-
- // nameInput
- nameInput = new JTextField();
- nameInput.setBounds(400, 300, 100, 30);
- this.add(nameInput);
-
- // description
- desc = new JTextArea("Write yo name \n here BITCH");
- desc.setBounds(400, 270, 100, 30);
- desc.setFocusable(false);
- this.add(desc);
-
- // Enter Button
- enter = new JButton("Enter chat");
- enter.setBounds(500, 300, 150, 30);
- enter.addActionListener(new ActionListener(){
-
- public void actionPerformed(ActionEvent e)
- {
- ChatPanel.username = nameInput.getText();
-
- frame.bmenu = false;
- frame.bchat = true;
-
- frame.enterStages();
- }
-
- });
- this.add(enter);
-
- // Exit Button
- exit = new JButton("Exit :-(");
- exit.setBounds(400, 400, 100, 100);
- exit.addActionListener(new ActionListener(){
-
- public void actionPerformed(ActionEvent e)
- {
- System.exit(0);
- }
-
- });
- this.add(exit);
-
- }
-
- }
Window.ChatPanel.java
- package Window;
-
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
-
- import javax.swing.*;
-
- public class ChatPanel extends JPanel
- {
- // USERNAME
- public static String username = "";
-
- // COMPONENTS
- public JTextArea output;
- public String outputString = "";
- public JTextField input;
-
- // WINDOW
- int windowx, windowy;
-
- public ChatPanel()
- {
- init();
- }
-
- public void init()
- {
- // Size of the window
- windowx = Frame.windowx;
- windowy = Frame.windowy;
-
- ///////////////// COMPONENTS
- this.setLayout(null);
-
- // Output
- output = new JTextArea(outputString);
- output.setBounds(0, 0, 800, 500);
- output.setFocusable(false);
- output.setBackground(Color.WHITE);
- this.add(output); // Adds the component
-
- // Input
- input = new JTextField();
- input.setBounds(0, 400, 800, 100);
- input.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- outputString += "\n" + username + " >> " + input.getText(); // Takes text from the input and adds it in a new line in the outputString
- updateOutput(); // Updates the output #yolo
- input.setText(""); // Makes the inputfield blanc
- }
-
- });
- this.add(input); // Adds the component
- }
-
- public void updateOutput()
- {
- output.setText(outputString);
- }
-
- public void paint(Graphics g)
- {
-
- }
-
-
- }