"I want to create a practical application using Java."
"I want to learn about file saving and GUI, but it seems difficult."
For those who have such concerns, we recommendCreating a Notepad Appis.
In this app,Basic functions such as inputting, saving, and loading charactersYou can experience.
JavaSwing
andFileWriter
If you use a mechanism such asAnyone can easily create it and learn the basics of GUIThis is the configuration.
In this article,Easy to understand even for Java beginners, with detailed explanations and code includedI will do it.
- What is the significance of creating a notepad app?
- Preparation of basic components required for Java
- Understanding the overall structure of the notepad app
- Implementation: Creating a notepad app with Swing
- Common errors and how to fix them
- Application: The next function you want to try
- Complete code summary and configuration
- Summary: What I learned from the notepad app
What is the significance of creating a notepad app?
Why is a notepad good for learning?
Conclusion: Because you can learn GUI, character input, and file saving all at once.
For beginners who want to create a "tangible" application in Java,Notepad Appis best.
You can learn the following skills in one app:
- Creating a screen using Swing (
JTextArea
,JButton
,JFileChooser
) - Managing and displaying entered characters
- Saving and loading to a text file
The Ministry of Education, Culture, Sports, Science and Technology's "development of information utilization skills" initiative also aims toPractical and personal learningis recommended (Source: https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1375607.htm).
Preparation of basic components required for Java
Let's learn about the components required for GUI
Conclusion: You can make a notepad using the following parts.
JTextArea
: A field for entering and displaying textJScrollPane
: A wrapper for making the page scrollableJButton
: Save/load buttonJFileChooser
: File selection dialog
Understanding the overall structure of the notepad app
Only three functions, so it's simple to make
Conclusion: You can complete the app in three steps:
- Place a text area on the screen
- Export to file using the Save button
- Load from file using the Load button
The structure looks like this:
1 | JFrame ├── JTextArea (with scroll) └── JPanel (save and open buttons) |
Implementation: Creating a notepad app with Swing
1 | import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; public class MemoApp extends JFrame { private JTextArea textArea; public MemoApp() { setTitle( "Memopad App" ); setSize( 500 , 400 ); setDefaultCloseOperation(EXIT_ON_CLOSE); textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); add(scrollPane, BorderLayout.CENTER); JButton saveBtn = new JButton( "Save" ); JButton loadBtn = new JButton( "Open" ); JPanel panel = new JPanel(); panel.add(saveBtn); panel.add(loadBtn); add(panel, BorderLayout.SOUTH); // Handle the save button saveBtn.addActionListener(e -> { JFileChooser fc = new JFileChooser(); int result = fc.showSaveDialog(this); if (result == JFileChooser.APPROVE_OPTION) { try (BufferedWriter writer = new BufferedWriter(new FileWriter(fc.getSelectedFile()))) { writer.write(textArea.getText()); } catch (IOException ex) { JOptionPane.showMessageDialog(this, "Failed to save."); } } }); // Handle open button loadBtn.addActionListener(e -> { JFileChooser fc = new JFileChooser(); int result = fc.showOpenDialog(this); if (result == JFileChooser.APPROVE_OPTION) { try (BufferedReader reader = new BufferedReader(new FileReader(fc.getSelectedFile()))) { textArea.setText(""); String line; while ((line = reader.readLine()) != null) { textArea.append(line + "\n"); } } catch (IOException ex) { JOptionPane.showMessageDialog(this, "Failed to load."); } } }); setVisible(true); } public static void main(String[] args) { new MemoApp(); } } |
Common errors and how to fix them
Checkpoints when saving or loading doesn't work
Conclusion: Let's review how to use JFileChooser and FileWriter.
showSaveDialog()
/showOpenDialog()
Check the return value of- try-with-resources (
try(...) {}
) to close securely - If you want to use Japanese
OutputStreamWriter
ToUTF-8
Designation also considered
Application: The next function you want to try
How can you make your notepad app more useful?
Extension ideas:
- Character count function
- Auto-save (every few minutes)
- Save history (management of past files)
Complete code summary and configuration
1 | MemoApp.java // A single file that combines GUI, save, and load |
Easy to use and quick to implementSimple GUI appIt has been completed as.
Summary: What I learned from the notepad app
In this article,How to make a notepad app in JavaWe introduced it in detail.
What I learned:
- Application development using GUI (Swing)
- Saving and loading to a file
- Practical parts combination and layout