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.
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
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