Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How should I organize my Java GUI?

I'm creating a game in Java for fun and I'm trying to decide how to organize my classes for the GUI. So far, all the classes with only the swing components and layout (no logic) are in a package called "ui". I now need to add listeners (i.e. ActionListener) to components (i.e. button). The listeners need to communicate with the Game class.

Currently I have: Game.java - creates the frame add panels to it

import javax.swing.*;
import ui.*;

public class Game {

    private JFrame frame;
    Main main;

    Rules rules;

    Game() {
        rules = new Rules();

        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        main = new Main();
        frame.setContentPane(main.getContentPane());
        show();
    }

    void show() {
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    public static void main(String[] args) { new Game(); }

}

Rules.java - game logic

ui package - all classes create new panels to be swapped out with the main frame's content pane Main.java (Main Menu) - creates a panel with components

Where do I now place the functionality for the Main class? In the game class? Separate class? Or is the whole organization wrong?

Thanks

like image 765
Spencer Avatar asked May 09 '10 06:05

Spencer


People also ask

Is Java GUI still used?

Majority of existing GUI java codebases are Swing and likely will stay that way until the codebase rots and nobody maintains it anymore.

Is Swing good for GUI?

Swing in Java is a lightweight GUI toolkit which has a wide variety of widgets for building optimized window based applications. It is a part of the JFC( Java Foundation Classes). It is build on top of the AWT API and entirely written in java. It is platform independent unlike AWT and has lightweight components.

Is Java GUI easy?

GUI (Graphical User Interface) in Java is an easy-to-use visual experience builder for Java applications. It is mainly made of graphical components like buttons, labels, windows, etc. through which the user can interact with an application. GUI plays an important role to build easy interfaces for Java applications.


1 Answers

First of all: it's a good intent what you have done. Trying to keep your code organized will certantly help you at programming. But try to keep this in mind: developing good code goes beyond organize and clasify your source code. For example... are you using any kind of UML Model? Are you applying any design pattern? Are your classes really highly cohesive? How about coupling?

All those things will guide you through the process of writing good code, which seems to be what you want at this point. And the result of all that will make your code organized and easy to mantain.

like image 200
Cristian Avatar answered Sep 30 '22 12:09

Cristian