In a text editor I've made it has a default size of 500, 350 but when the user enlarges the window and then make it smaller again it JScrollPane becomes smaller using the largest size it has been. The source for it is below:
java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Font.*;
import java.util.*;
import java.io.*;
public class Main extends JFrame implements
ActionListener
{
public static JEditorPane editor = new JEditorPane();
public JScrollPane editorScrollPane = new JScrollPane(editor,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
private JMenuItem editCopy = new JMenuItem();
private JMenuItem editCut = new JMenuItem();
private JMenu editMenu = new JMenu();
private JMenuItem editPaste = new JMenuItem();
private JMenu fileMenu = new JMenu();
private JMenuItem fileNew = new JMenuItem();
private JMenuItem fileOpen = new JMenuItem();
private JMenuItem fileSave = new JMenuItem();
private JMenuItem formatFonts = new JMenuItem();
private JMenu formatMenu = new JMenu();
private JSeparator jSeparator1 = new JSeparator();
private JSeparator jSeparator2 = new JSeparator();
private JMenuBar menuBar = new JMenuBar();
private JMenuItem quit = new JMenuItem();
private JMenuItem selectAll = new JMenuItem();
private JMenuItem timeDate = new JMenuItem();
public static void getTime()
{
String time;
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
int month = now.get(Calendar.MONTH) + 1;
int day = now.get(Calendar.DAY_OF_MONTH);
int year = now.get(Calendar.YEAR);
String monthName = "";
switch (month)
{
case (1):
monthName = "January";
break;
case (2):
monthName = "February";
break;
case (3):
monthName = "March";
break;
case (4):
monthName = "April";
break;
case (5):
monthName = "May";
break;
case (6):
monthName = "June";
break;
case (7):
monthName = "July";
break;
case (8):
monthName = "August";
break;
case (9):
monthName = "September";
break;
case (10):
monthName = "October";
break;
case (11):
monthName = "November";
break;
case (12):
monthName = "December";
}
time = monthName + " " + day + ", " + year + " " + hour + ":" + minute;
String text = editor.getText();
if (text == null) {
editor.setText(time);
} else {
editor.setText(text + " " + time);
}
}
public Main()
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("nText 0.6.0.5 Beta");
fileMenu.setText("File");
fileNew.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
fileNew.setText("New File");
fileMenu.add(fileNew);
fileOpen.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
fileOpen.setText("Open File");
fileOpen.addActionListener(this);
fileMenu.add(fileOpen);
fileSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
fileSave.setText("Save File");
fileSave.addActionListener(this);
fileMenu.add(fileSave);
fileMenu.add(jSeparator1);
quit.setText("Quit");
quit.addActionListener(this);
fileMenu.add(quit);
menuBar.add(fileMenu);
editMenu.setText("Edit");
editCut.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
editCut.setText("Cut");
editCut.addActionListener(this);
editMenu.add(editCut);
editCopy.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
editCopy.setText("Copy");
editCopy.addActionListener(this);
editMenu.add(editCopy);
editPaste.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
editPaste.setText("Paste");
editPaste.addActionListener(this);
editMenu.add(editPaste);
editMenu.add(jSeparator2);
timeDate.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F5, 0));
timeDate.setText("Time & Date");
timeDate.addActionListener(this);
editMenu.add(timeDate);
selectAll.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
selectAll.setText("Select All");
editMenu.add(selectAll);
menuBar.add(editMenu);
formatMenu.setText("Format");
formatFonts.setText("Font...");
formatMenu.add(formatFonts);
menuBar.add(formatMenu);
setJMenuBar(menuBar);
setSize(500, 350);
setLayout(new BorderLayout());
add(editorScrollPane);
setVisible(true);
}
public void actionPerformed(ActionEvent evt)
{
Object source = evt.getSource();
if (source == fileOpen) {
openFile.openFile();
} else if (source == fileNew) {
editor.setText("");
} else if (source == fileSave) {
saveFile.saveFile();
} else if (source == quit) {
System.exit(0);
} else if (source == editCut) {
editor.cut();
} else if (source == editCopy) {
editor.copy();
} else if (source == editPaste) {
editor.paste();
} else if (source == timeDate) {
getTime();
} else if (source == formatFonts) {
// The font changer will be ignored until the syntax highlighter is finished.
}
}
public static void main(String args[]) {
new Main();
}
}