Die Geschichte der Erstellung einer Task-Management-Anwendung mit Swing, Java

Hallo, das ist ein bestimmter Firmeningenieur. Ich studiere, weil ich denke, dass es schlecht ist, dass ich Ingenieur bin, aber nur ein vages Verständnis der Objektorientierung habe. Als Teil davon habe ich mich entschlossen, objektorientiertes Schreiben zu verstehen, während ich eine Aufgabenverwaltungs-App erstellte. Ich werde den Prozess als Memorandum verlassen.

Die Spezifikationen sind vorerst so. -Personale Desktop-Anwendung (Ich möchte mich nicht anmelden oder sonst etwas) ・ Die grundlegende Benutzeroberfläche respektiert trello https://trello.com/

Also habe ich die oberste Seite gemacht. スクリーンショット 2017-09-13 9.59.04.png

Es funktioniert mit einem Code wie diesem. (Vor dem Refactoring.)

public class Top extends JFrame{
        /**
        *Programm starten
        */
        public static void main(String[] args) {
        	Top frame = new Top("Task Manager");
            frame.setVisible(true);
        }
        
        Top(String title){
        	setTitle(title);
            setBounds(100, 100, 1000, 800);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            setLayout(new FlowLayout());

            //Anzeigebereich für TODO-Aufgaben
            //Layout des Aufgabenanzeigebereichs
            JPanel TodoPanel = new JPanel();
            TodoPanel.setPreferredSize(new Dimension(300, 600));
            TodoPanel.setBackground(Color.WHITE);
            TodoPanel.setLayout(new BoxLayout(TodoPanel, BoxLayout.X_AXIS));
            
            //Panel zum Platzieren von Titeln
            JPanel TodoTitlePanel = new JPanel();
            TodoTitlePanel.setPreferredSize(new Dimension(300, 60));
            TodoTitlePanel.setBackground(Color.WHITE);
            TodoTitlePanel.setLayout(new BoxLayout(TodoTitlePanel, BoxLayout.Y_AXIS));
            TodoTitlePanel.setAlignmentY(0.0f);
            TodoPanel.add(TodoTitlePanel);
            
            //Titelplatzierung
            JLabel label = new JLabel("TODO");
            label.setFont(new Font("MS Gothic", Font.BOLD, 32));
            label.setAlignmentX(0.5f);
            TodoTitlePanel.add(label);
            
            //Bilderrandbereich
            LineBorder border = new LineBorder(Color.BLACK, 2, true);
            TodoPanel.setBorder(border);
            
            //Aufgabenbereich anzeigen
            //Layout des Aufgabenanzeigebereichs
            JPanel DoingPanel = new JPanel();
            DoingPanel.setPreferredSize(new Dimension(300, 600));
            DoingPanel.setBackground(Color.WHITE);
            DoingPanel.setLayout(new BoxLayout(DoingPanel, BoxLayout.X_AXIS));
            
            //Panel zum Platzieren von Titeln
            JPanel DoingTitlePanel = new JPanel();
            DoingTitlePanel.setPreferredSize(new Dimension(300, 60));
            DoingTitlePanel.setBackground(Color.WHITE);
            DoingTitlePanel.setLayout(new BoxLayout(DoingTitlePanel, BoxLayout.Y_AXIS));
            DoingTitlePanel.setAlignmentY(0.0f);
            DoingPanel.add(DoingTitlePanel);
            
            //Titelplatzierung
            JLabel doingLabel = new JLabel("DOING");
            doingLabel.setFont(new Font("MS Gothic", Font.BOLD, 32));
            doingLabel.setAlignmentX(0.5f);
            DoingTitlePanel.add(doingLabel);
            
            //Bilderrandbereich
            LineBorder border2 = new LineBorder(Color.BLACK, 2, true);
            DoingPanel.setBorder(border2);
            
            //DONE Aufgabenanzeigebereich
            //Layout des Aufgabenanzeigebereichs
            JPanel DonePanel = new JPanel();
            DonePanel.setPreferredSize(new Dimension(300, 600));
            DonePanel.setBackground(Color.WHITE);
            DonePanel.setLayout(new BoxLayout(DonePanel, BoxLayout.X_AXIS));
            
            //Panel zum Platzieren von Titeln
            JPanel DoneTitlePanel = new JPanel();
            DoneTitlePanel.setPreferredSize(new Dimension(300, 60));
            DoneTitlePanel.setBackground(Color.WHITE);
            DoneTitlePanel.setLayout(new BoxLayout(DoneTitlePanel, BoxLayout.Y_AXIS));
            DoneTitlePanel.setAlignmentY(0.0f);
            DonePanel.add(DoneTitlePanel);
            
            //Bilderrandbereich
            LineBorder border3 = new LineBorder(Color.BLACK, 2, true);
            DonePanel.setBorder(border3);
            
            //Titelplatzierung
            JLabel doneLabel = new JLabel("DONE");
            doneLabel.setFont(new Font("MS Gothic", Font.BOLD, 32));
            doneLabel.setAlignmentX(0.5f);
            DoneTitlePanel.add(doneLabel);
            
            //Tastenlayout
            JPanel buttonPanel = new JPanel();
            
            JButton createButton = new JButton("Erstelle neu");
            createButton.setPreferredSize(new Dimension(100,50));
            buttonPanel.add(createButton);
            
            JButton editButton = new JButton("Aufgabe bearbeiten");
            editButton.setPreferredSize(new Dimension(100,50));
            buttonPanel.add(editButton);

            Container contentPane = getContentPane();
            contentPane.add(TodoPanel);
            contentPane.add(DoingPanel);
            contentPane.add(DonePanel);
            contentPane.add(buttonPanel);
          }
} 

Es ist lang. Es gibt drei Stellen, an denen dieselbe Verarbeitung durchgeführt wird. Es ist ein Ärger, weil Sie neue Etiketten und Paneele mit Swing erstellen müssen. Der folgende Code fasst also die doppelte Verarbeitung zusammen.

public class Top extends JFrame{
        /**
        *Programm starten
        */
        public static void main(String[] args) {
        	Top frame = new Top("Task Manager");
            frame.setVisible(true);
        }
        
        Top(String title){
        	setTitle(title);
            setBounds(100, 100, 1000, 800);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            setLayout(new FlowLayout());

            //TODO-Aufgabenanzeige
            makeTaskPanel("TODO");
            
            //Aufgabenanzeige
            makeTaskPanel("DOING");
            
            //DONE Aufgabenanzeigebereich
            makeTaskPanel("DONE");
            
            //Tastenlayout
            JPanel buttonPanel = new JPanel();
            TaskRegister taskRegisterPanel = new TaskRegister();
            this.add(taskRegisterPanel);
            taskRegisterPanel.setVisible(false);
            JButton createButton = new JButton("Erstelle neu");
            
            buttonPanel.add(createButton);
            
            JButton editButton = new JButton("Aufgabe bearbeiten");
            editButton.setPreferredSize(new Dimension(100,50));
            buttonPanel.add(editButton);

            Container contentPane = getContentPane();
            contentPane.add(buttonPanel);
          }
        
        public void makeTaskPanel(String panelTitle){
        	//Erstellen Sie ein Aufgabenfeld mit dem im Titel angegebenen Titeltext
            JPanel mainPanel = new JPanel();
            JPanel titlePanel = new JPanel();
            JLabel titleLabel = new JLabel(panelTitle);
            LineBorder border = new LineBorder(Color.BLACK, 2, true);
            
        	//Layout des Aufgabenanzeigebereichs
            mainPanel.setPreferredSize(new Dimension(300, 600));
            mainPanel.setBackground(Color.WHITE);
            mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.X_AXIS));
            
            //Panel zum Platzieren von Titeln
            titlePanel.setPreferredSize(new Dimension(300, 60));
            titlePanel.setBackground(Color.WHITE);
            titlePanel.setLayout(new BoxLayout(titlePanel, BoxLayout.Y_AXIS));
            titlePanel.setAlignmentY(0.0f);
            mainPanel.add(titlePanel);
            
            //Titelplatzierung
            titleLabel.setFont(new Font("MS Gothic", Font.BOLD, 32));
            titleLabel.setAlignmentX(0.5f);
            titlePanel.add(titleLabel);
            
            //Bilderrandbereich
            mainPanel.setBorder(border);
            
            Container contentPane = getContentPane();
            contentPane.add(mainPanel);
        }
} 

Was wurde dupliziert

  1. Neue notwendige Tafel, Etikett usw.
  2. Ordnen Sie, indem Sie mit der Größe herumspielen Da es ein Teil zu tun war, habe ich diesen Teil in eine Methode ausgeschnitten. Bei der Objektorientierung ist die Kohäsion stark und die Kopplung gering </ strong>, je besser das Design ist.

Bedeutet das, dass doppelte Funktionen so weit wie möglich zusammengefasst werden sollten, damit der Anrufer sie problemlos aufrufen kann? Also werde ich weiterhin mein Bestes geben.

Recommended Posts

Die Geschichte der Erstellung einer Task-Management-Anwendung mit Swing, Java
Die Geschichte eines Game Launcher mit automatischer Ladefunktion [Java]
Die Geschichte, einen Reverse-Proxy mit ProxyServlet zu erstellen
Die Geschichte von dto, dao-like mit Java, SQLite
Eine Geschichte über das Erreichen der League Of Legends-API mit JAVA
Die Geschichte eines gewöhnlichen Othello in Java
Java / Twitter-Klon- / Aufgabenverwaltungssystem (1) Erstellen Sie eine Datenbank
Eine Geschichte über die Entwicklung von ROS namens Rosjava mit Java
Eine Geschichte darüber, wie catkin_make von Rosjava offline kompatibel gemacht wird
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Überprüfen Sie die Funktion von zwei Rollen mit einer Chat-Anwendung
[Java] Vereinfachen Sie die Implementierung der Datenverlaufsverwaltung mit Reladomo
Implementierung eines mathematischen Syntaxanalysators durch rekursive absteigende Syntaxanalysemethode (Java)
Eine Geschichte, die von String () von Interface abhängig ist und von JdkDynamicAopProxy vertreten wird
Die Geschichte des Erstellens einer Java-Version des Minecraft-Servers mit GCP (und dem Festlegen einer weißen Liste)
Eine Geschichte, die bei NotSerializableException steckt
Bildschirmübergang mit Swing, Java
Verfahren zur Erstellung von Aufgabenverwaltungsanwendungen
Die Geschichte des Refactorings mit einem selbstgemachten Helfer zum ersten Mal in einer Rails-App
Eine Geschichte, die ich mit Java nur schwer herausfordern konnte
Vergleich der WEB-Anwendungsentwicklung mit Rails und Java Servlet + JSP
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Erstellen wir eine Buchverwaltungs-Webanwendung mit Spring Boot part1
Ich habe versucht, eine Kreditkartenhandelsanwendung mit Corda 1 auszuführen
[Hinweis] Eine Geschichte über das Ändern von Java-Build-Tools mit VS-Code
Lassen Sie uns mit Spring Boot part3 eine Webanwendung für die Buchverwaltung erstellen
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Eine Geschichte über die Verbindung zu einem CentOS 8-Server mit einem alten Ansible
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Lassen Sie uns mit Spring Boot part2 eine Webanwendung für die Buchverwaltung erstellen
Hinweis Nr. 2 "Erstellen eines Suchverlaufs mit ArrayList und HashSet" [Java]
Eine Geschichte über die Schwierigkeit, ein Testframework an Java 6 auszurichten
Eine Geschichte, die mit der Einführung von Web Apple Pay zu kämpfen hatte
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Die Geschichte eines Othello-Spiels vom Kommunikationstyp mit Scala.
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Denken Sie an eine Java-Update-Strategie
Erstellen eines Java-Projekts mit Gradle
[Java Edition] Geschichte der Serialisierung
Ich habe mit Swing eine GUI erstellt
Wirklich beängstigende (Java Anti-Pattern) Geschichte
Die Geschichte von Java Gold SE8
Liste der Java-Objekte sortieren
Erstellen Sie eine Webanwendung mit Javalin
Greifen Sie über eine Java-Anwendung auf Teradata zu
Eindrücke von Black Jack-Cli mit Ruby
Eine kurze Beschreibung der JAVA-Abhängigkeiten
Führen Sie in Java8 geschriebene Anwendungen in Java6 aus
Die Geschichte, ein Projekt zu bauen, das Maven mit Ant gebaut hat
Eine Geschichte, die ich mit der Stream-API von Java8 einem Prozess schreiben wollte, der einer while-Anweisung entspricht
Holen Sie sich eine Liste der S3-Dateien mit ListObjectsV2Request (AWS SDK für Java)
Eine Aufzeichnung zum Einrichten einer Java-Entwicklungsumgebung mit Visual Studio Code
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Lassen Sie uns das Ergebnis der Analyse von Java-Bytecode in einem Klassendiagramm ausdrücken
Erstellen einer Entwicklungsumgebung für Java-Webanwendungen mit Docker für Mac Teil1
[Java] Stellen Sie eine mit Eclipse + Maven + Ontology mit Heroku erstellte Webanwendung bereit
Umfang des Versuchs, eine Java-Webanwendung unter Windows Server 2016 zu erstellen