Bonjour, c'est un certain ingénieur d'entreprise. J'étudie parce que je pense que c'est mal d'être ingénieur, mais d'avoir une compréhension vague de l'orientation des objets. Dans ce cadre, j'ai décidé de comprendre l'écriture orientée objet tout en créant une application de gestion des tâches. Je laisserai le processus comme un mémorandum.
Pour le moment, les spécifications sont comme ça.
-Application de bureau personnelle (je ne veux pas me connecter ou quoi que ce soit d'autre)
・ L'interface utilisateur de base respecte trello
https://trello.com/
-Utilisez SQLite
pour enregistrer les tâches enregistrées
J'ai donc fait la première page.
Cela fonctionne avec un code comme celui-ci. (Avant de refactoriser.)
public class Top extends JFrame{
/**
*Lancer l'application
*/
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());
//Zone d'affichage des tâches TODO
//Disposition de la zone d'affichage des tâches
JPanel TodoPanel = new JPanel();
TodoPanel.setPreferredSize(new Dimension(300, 600));
TodoPanel.setBackground(Color.WHITE);
TodoPanel.setLayout(new BoxLayout(TodoPanel, BoxLayout.X_AXIS));
//Panneau pour placer les titres
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);
//Placement du titre
JLabel label = new JLabel("TODO");
label.setFont(new Font("MS Gothic", Font.BOLD, 32));
label.setAlignmentX(0.5f);
TodoTitlePanel.add(label);
//Bordure de cadre
LineBorder border = new LineBorder(Color.BLACK, 2, true);
TodoPanel.setBorder(border);
//DOING zone d'affichage des tâches
//Disposition de la zone d'affichage des tâches
JPanel DoingPanel = new JPanel();
DoingPanel.setPreferredSize(new Dimension(300, 600));
DoingPanel.setBackground(Color.WHITE);
DoingPanel.setLayout(new BoxLayout(DoingPanel, BoxLayout.X_AXIS));
//Panneau pour placer les titres
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);
//Placement du titre
JLabel doingLabel = new JLabel("DOING");
doingLabel.setFont(new Font("MS Gothic", Font.BOLD, 32));
doingLabel.setAlignmentX(0.5f);
DoingTitlePanel.add(doingLabel);
//Bordure de cadre
LineBorder border2 = new LineBorder(Color.BLACK, 2, true);
DoingPanel.setBorder(border2);
//Zone d'affichage des tâches DONE
//Disposition de la zone d'affichage des tâches
JPanel DonePanel = new JPanel();
DonePanel.setPreferredSize(new Dimension(300, 600));
DonePanel.setBackground(Color.WHITE);
DonePanel.setLayout(new BoxLayout(DonePanel, BoxLayout.X_AXIS));
//Panneau pour placer les titres
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);
//Bordure de cadre
LineBorder border3 = new LineBorder(Color.BLACK, 2, true);
DonePanel.setBorder(border3);
//Placement du titre
JLabel doneLabel = new JLabel("DONE");
doneLabel.setFont(new Font("MS Gothic", Font.BOLD, 32));
doneLabel.setAlignmentX(0.5f);
DoneTitlePanel.add(doneLabel);
//Disposition des boutons
JPanel buttonPanel = new JPanel();
JButton createButton = new JButton("Créer un nouveau");
createButton.setPreferredSize(new Dimension(100,50));
buttonPanel.add(createButton);
JButton editButton = new JButton("Modifier la tâche");
editButton.setPreferredSize(new Dimension(100,50));
buttonPanel.add(editButton);
Container contentPane = getContentPane();
contentPane.add(TodoPanel);
contentPane.add(DoingPanel);
contentPane.add(DonePanel);
contentPane.add(buttonPanel);
}
}
C'est long. Il y a trois endroits où le même traitement est effectué. C'est un problème car vous devez créer de nouvelles étiquettes et panneaux avec balançoire. Ainsi, le code ci-dessous résume le traitement dupliqué.
public class Top extends JFrame{
/**
*Lancer l'application
*/
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());
//Affichage des tâches TODO
makeTaskPanel("TODO");
//Affichage des tâches en cours
makeTaskPanel("DOING");
//Zone d'affichage des tâches DONE
makeTaskPanel("DONE");
//Disposition des boutons
JPanel buttonPanel = new JPanel();
TaskRegister taskRegisterPanel = new TaskRegister();
this.add(taskRegisterPanel);
taskRegisterPanel.setVisible(false);
JButton createButton = new JButton("Créer un nouveau");
buttonPanel.add(createButton);
JButton editButton = new JButton("Modifier la tâche");
editButton.setPreferredSize(new Dimension(100,50));
buttonPanel.add(editButton);
Container contentPane = getContentPane();
contentPane.add(buttonPanel);
}
public void makeTaskPanel(String panelTitle){
//Créer un panneau des tâches avec le texte du titre spécifié dans le titre
JPanel mainPanel = new JPanel();
JPanel titlePanel = new JPanel();
JLabel titleLabel = new JLabel(panelTitle);
LineBorder border = new LineBorder(Color.BLACK, 2, true);
//Disposition de la zone d'affichage des tâches
mainPanel.setPreferredSize(new Dimension(300, 600));
mainPanel.setBackground(Color.WHITE);
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.X_AXIS));
//Panneau pour placer les titres
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);
//Placement du titre
titleLabel.setFont(new Font("MS Gothic", Font.BOLD, 32));
titleLabel.setAlignmentX(0.5f);
titlePanel.add(titleLabel);
//Bordure de cadre
mainPanel.setBorder(border);
Container contentPane = getContentPane();
contentPane.add(mainPanel);
}
}
Ce qui a été dupliqué
Cela signifie-t-il que les fonctions en double doivent être regroupées autant que possible afin que l'appelant puisse les appeler facilement? Je vais donc continuer à faire de mon mieux.
Recommended Posts