支持语法高亮的Java Swing简单文本编辑器

 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import org.fife.ui.rtextarea.*;
import org.fife.ui.rsyntaxtextarea.*;
import java.io.*;

@SuppressWarnings("serial")
public class Document extends JFrame implements ActionListener, DocumentListener {
	private void newFile() {
		if (changed)
			saveFile();
		file = null;
		textArea.setText("");
		changed = false;
		setTitle("Editor");
	}

	private String readFile(File file) {
		StringBuilder result = new StringBuilder();
		try (FileReader fr = new FileReader(file); BufferedReader reader = new BufferedReader(fr);) {
			String line;
			while ((line = reader.readLine()) != null) {
				result.append(line + "\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Cannot read file !", "Error !", JOptionPane.ERROR_MESSAGE);
		}
		return result.toString();
	}

	private void saveAs(String dialogTitle) {
		JFileChooser dialog = new JFileChooser(System.getProperty("Document.this"));
		dialog.setDialogTitle(dialogTitle);
		int result = dialog.showSaveDialog(this);
		if (result != JFileChooser.APPROVE_OPTION)
			return;
		file = dialog.getSelectedFile();
		try (PrintWriter writer = new PrintWriter(file);) {
			writer.write(textArea.getText());
			changed = false;
			setTitle("Editor - " + file.getName());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	private void saveFile() {
		if (changed) {
			int ans = JOptionPane.showConfirmDialog(null, "The file has changed. You want to save it?", "Save file",
					JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
			if (ans == JOptionPane.NO_OPTION)
				return;
		}
		if (file == null) {
			saveAs("Save");
			return;
		}
		String text = textArea.getText();
		System.out.println(text);
		try (PrintWriter writer = new PrintWriter(file);) {
			if (!file.canWrite())
				throw new Exception("Cannot write file!");
			writer.write(text);
			changed = false;
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void loadFile() {
		JFileChooser dialog = new JFileChooser(System.getProperty("Document.this"));
		dialog.setMultiSelectionEnabled(false);
		try {
			int result = dialog.showOpenDialog(this);
			if (result == JFileChooser.CANCEL_OPTION)
				return;
			if (result == JFileChooser.APPROVE_OPTION) {
				if (changed)
					saveFile();
				file = dialog.getSelectedFile();
				textArea.setText(readFile(file));
				changed = false;
				setTitle("Editor - " + file.getName());
			}
		} catch (Exception e) {
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, e, "Error", JOptionPane.ERROR_MESSAGE);
		}
	}

	private File file;
	public boolean changed = false;
	private boolean toolBarEnable = true;

	RSyntaxTextArea textArea = new RSyntaxTextArea(20, 60);

	JFrame frame = new JFrame("Input Dialog Box Frame");
	JButton button = new JButton("Show Input Dialog Box");
	JFileChooser fc = new JFileChooser();

	private JTextArea ta;
	private int count;
	private JMenuBar menuBar;
	private String pad;
	private JToolBar toolBar;
	private JMenu file_1;
	private JMenuItem n;
	private JMenuItem open;
	private JMenuItem save;
	private JMenuItem saveas;
	private JMenuItem 退出;
	private JMenu edit;
	private JMenuItem cut;
	private JMenuItem copy;
	private JMenuItem paste;
	private JMenuItem find;
	private JMenuItem sall;
	private JMenu format;
	private JMenuItem font;
	private JMenu view;
	private JMenuItem showstatus;
	private JMenu help;
	private JMenuItem about;
	private JTextField status;

	public Document() {

		super("Text Editor");
		setSize(600, 600);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		textArea.getDocument().addDocumentListener(this);

		Container pane = getContentPane();
		pane.setLayout(new BorderLayout());

		textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
		textArea.setCodeFoldingEnabled(true);
		textArea.addCaretListener(new CaretListener() {
			// Each time the caret is moved, it will trigger the listener and its method
			// caretUpdate.
			// It will then pass the event to the update method including the source of the
			// event (which is our textarea control)
			public void caretUpdate(CaretEvent e) {
				JTextArea editArea = (JTextArea) e.getSource();

				// Lets start with some default values for the line and column.
				int linenum = 1;
				int columnnum = 1;

				// We create a try catch to catch any exceptions. We will simply ignore such an
				// error for our demonstration.
				try {
					// First we find the position of the caret. This is the number of where the
					// caret is in relation to the start of the JTextArea
					// in the upper left corner. We use this position to find offset values (eg what
					// line we are on for the given position as well as
					// what position that line starts on.
					int caretpos = editArea.getCaretPosition();
					linenum = editArea.getLineOfOffset(caretpos);

					// We subtract the offset of where our line starts from the overall caret
					// position.
					// So lets say that we are on line 5 and that line starts at caret position 100,
					// if our caret position is currently 106
					// we know that we must be on column 6 of line 5.
					columnnum = caretpos - editArea.getLineStartOffset(linenum);

					// We have to add one here because line numbers start at 0 for getLineOfOffset
					// and we want it to start at 1 for display.
					linenum += 1;
					columnnum += 1;
				} catch (Exception ex) {
				}

				// Once we know the position of the line and the column, pass it to a helper
				// function for updating the status bar.
				updateStatus(linenum, columnnum);
			}
		});

		RTextScrollPane sp = new RTextScrollPane(textArea);
		pane.add(sp);

		count = 0;
		pad = " ";
		ta = new JTextArea(); // textarea

		menuBar = new JMenuBar();
		toolBar = new JToolBar();
		toolBar.setFloatable(false);

		ta.setLineWrap(true);
		ta.setWrapStyleWord(true);

		setJMenuBar(menuBar);

		file_1 = new JMenu("文件");
		file_1.setMnemonic('F');
		menuBar.add(file_1);

		n = new JMenuItem("新建");
		n.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				newFile();
			}
		});
		n.setMnemonic('N');
		file_1.add(n);

		open = new JMenuItem("打开");
		open.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				loadFile();

			}
		});
		open.setMnemonic('O');
		file_1.add(open);

		save = new JMenuItem("保存");
		save.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				saveFile();
			}
		});
		save.setMnemonic('S');
		file_1.add(save);

		saveas = new JMenuItem("另存为...");
		saveas.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				saveAs("另存为...");
			}
		});
		file_1.add(saveas);

		退出 = new JMenuItem("退出");
		退出.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (changed)
					saveFile();

				System.exit(0);
			}
		});
		退出.setMnemonic('Q');
		file_1.add(退出);

		edit = new JMenu("编辑");
		edit.setMnemonic('E');
		menuBar.add(edit);

		cut = new JMenuItem("剪切");
		cut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textArea.cut();
			}
		});
		cut.setMnemonic('T');
		edit.add(cut);

		copy = new JMenuItem("复制");
		copy.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textArea.copy();
			}
		});
		copy.setMnemonic('C');
		edit.add(copy);

		paste = new JMenuItem("粘贴");
		paste.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textArea.paste();
			}
		});
		paste.setMnemonic('P');
		edit.add(paste);

		find = new JMenuItem("查找");
		find.addActionListener(this);
		find.setMnemonic('F');
		edit.add(find);

		sall = new JMenuItem("选择全部");
		sall.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textArea.selectAll();
			}
		});
		sall.setMnemonic('A');
		edit.add(sall);

		format = new JMenu("格式");
		menuBar.add(format);

		font = new JMenuItem("字体");
		font.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFontDialog fontDialog = new JFontDialog();
				fontDialog.setVisible(true);
				Font selectedFont = fontDialog.getFont();
				System.out.println(selectedFont.toString());
				textArea.setFont(selectedFont);

			}
		});
		format.add(font);

		view = new JMenu("查看");
		menuBar.add(view);

		showstatus = new JMenuItem("状态栏");
		showstatus.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (toolBarEnable == true) {
					toolBar.setVisible(false);
					toolBarEnable = false;

				} else {
					toolBar.setVisible(true);
					toolBarEnable = true;
				}
			}
		});
		view.add(showstatus);

		help = new JMenu("帮助");
		menuBar.add(help);

		about = new JMenuItem("关于");
		about.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null, "Text Editor in Java. \n\n 2021", "Text Editor", 1);
			}
		});
		help.add(about);

		pane.add(toolBar, BorderLayout.SOUTH);

		status = new JTextField();
		status.setText("行: 1 列: 1");
		toolBar.add(status);

		setVisible(true);

	}

	void writetofile(File ff) throws Exception {
		FileWriter fw = new FileWriter(ff.getAbsoluteFile());
		BufferedWriter bw = new BufferedWriter(fw);
		bw.write(textArea.getText());
		bw.close();
	}

	private static void printLines(String name, InputStream ins) throws Exception {
		String line = null;
		BufferedReader in = new BufferedReader(new InputStreamReader(ins));
		while ((line = in.readLine()) != null) {
			System.out.println(name + " " + line);
		}
	}

	private static void runProcess(String command) throws Exception {
		Process pro = Runtime.getRuntime().exec(command);
		printLines(command + "\n============================================================\nOUTPUT:\n\n\n\n",
				pro.getInputStream());
		printLines(command + " stderr:", pro.getErrorStream());
		pro.waitFor();
	}

//	public void actionPerformed(ActionEvent e) {
//		JMenuItem choice = (JMenuItem) e.getSource();
//
//	}

	public static void main(String[] args) {

		new Document();
	}

	@Override
	public void insertUpdate(DocumentEvent e) {
		changed = true;
	}

	@Override
	public void removeUpdate(DocumentEvent e) {
		changed = true;
	}

	@Override
	public void changedUpdate(DocumentEvent e) {
		changed = true;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String action = e.getActionCommand();
		if (action.equals("查找")) {
			FindDialogDoc find = new FindDialogDoc(this, true);
			find.showDialog();
		}
	}

// This helper function updates the status bar with the line number and column
// number.
	private void updateStatus(int linenumber, int columnnumber) {
		status.setText("行: " + linenumber + " 列: " + columnnumber);
	}

}

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

@SuppressWarnings("serial")
public class FindDialogDoc extends JDialog implements ActionListener, KeyListener {

	Document parent;
	JLabel label;
	JTextField textField;
	JCheckBox caseSensitive;
	JButton find, close;
	boolean finishedFinding = true;
	Matcher matcher;

	public FindDialogDoc(Document parent, boolean modal) {
		super(parent, modal);
		this.parent = parent;
		getContentPane().addKeyListener(this);
		getContentPane().setFocusable(true);
		initComponents();
		setTitle("查找");
		setLocationRelativeTo(parent);
		pack();
	}

	public void showDialog() {
		setVisible(true);
	}

	private void initComponents() {
		getContentPane().setLayout(new GridLayout(3, 1));
		JPanel panel1 = new JPanel();
		label = new JLabel("查找:");
		label.setDisplayedMnemonic('F');
		panel1.add(label);
		textField = new JTextField(15);
		panel1.add(textField);
		label.setLabelFor(textField);
		getContentPane().add(panel1);
		JPanel panel2 = new JPanel();
		caseSensitive = new JCheckBox("大小写敏感");
		panel2.add(caseSensitive);
		getContentPane().add(panel2);
		JPanel panel3 = new JPanel();
		find = new JButton("查找");
		close = new JButton("关闭");
		find.addActionListener(this);
		close.addActionListener(this);
		panel3.add(find);
		panel3.add(close);
		getContentPane().add(panel3);
		textField.addKeyListener(this);
		find.addKeyListener(this);
		close.addKeyListener(this);
		caseSensitive.addKeyListener(this);
	}

	private void find(String pattern) {
		if (!finishedFinding) {
			if (matcher.find()) {
				int selectionStart = matcher.start();
				int selectionEnd = matcher.end();
				parent.textArea.moveCaretPosition(matcher.start());
				parent.textArea.select(selectionStart, selectionEnd);
			} else {
				finishedFinding = true;
				JOptionPane.showMessageDialog(this, "已到达文件末尾", "文件末尾", JOptionPane.INFORMATION_MESSAGE);
				// closeDialog();
			}
		} else {
			matcher = Pattern.compile(pattern).matcher(parent.textArea.getText());
			finishedFinding = false;
			find(pattern);
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		if (cmd.equals("查找")) {
			String input = textField.getText();
			StringBuilder pattern = new StringBuilder();
			if (!caseSensitive.isSelected()) {
				pattern.append("(?i)");
			}
			pattern.append(input);
			find(pattern.toString());
		} else if (cmd.equals("关闭")) {
			closeDialog();
		}
	}

	private void closeDialog() {
		setVisible(false);
		dispose();
	}

	@Override
	public void keyTyped(KeyEvent e) {
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// System.out.println(e.getKeyCode());
		if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
			closeDialog();
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {
	}

}

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

/**
 *
 * @author PANKAJ
 */
public class JFontDialog extends JDialog {

	private static final long serialVersionUID = -6437493905392469749L;
	private Font font;
	private Font[] fonts;
	private JButton okButton;
	private JButton cancelButton;
	private JLabel previewLabel;
	private JList familyList;
	private JTextField familyTextField;
	private JList styleList;
	private JTextField styleTextField;
	private JList sizeList;
	private JTextField sizeTextField;

	public JFontDialog() {
		this(new Font("Arial", 0, 12));
	}

	public JFontDialog(Font font) {
		this("Font dialog", font);
	}

	public JFontDialog(String title, Font font) {
		super.setTitle(title);
		this.font = font;
		this.init();
	}

	public void setFont(Font font) {
		this.font = font;
	}

	public Font getFont() {
		return this.font;
	}

	private void init() {
		this.fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
		this.setLayout(new FlowLayout());
		this.setMinimumSize(new Dimension(400 + 80, 350));
		this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.setModal(true);
		this.setLocationByPlatform(true);
		this.add(this.getFamilyPanel());
		this.add(this.getStylePanel());
		this.add(this.getSizePanel());
		this.add(this.getPreviewPanel());
		this.add(this.getButtonPanel());
		this.eventHandling();
	}

	private JPanel getFamilyPanel() {
		JPanel familyPanel = new JPanel();
		familyPanel.setPreferredSize(new Dimension(200 + 10, 200 + 10));
		familyPanel.setBorder(new TitledBorder("Font:"));
		familyPanel.setLayout(new FlowLayout());
		familyPanel.add(this.getFamilyTextBox());
		familyPanel.add(this.getFamilyScrooledList());
		return familyPanel;
	}

	private JTextField getFamilyTextBox() {
		familyTextField = new JTextField();
		familyTextField.setPreferredSize(new Dimension(200, 20));
		familyTextField.setText(this.getFont().getFamily());
		familyTextField.setEditable(false);
		return familyTextField;
	}

	private JScrollPane getFamilyScrooledList() {
		familyList = new JList(this.getFamily());
		JScrollPane fontPane = new JScrollPane();
		fontPane.setViewportView(familyList);
		fontPane.setPreferredSize(new Dimension(200, 152));
		familyList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		familyList.setSelectedValue(this.getFont().getFamily(), true);

		return fontPane;
	}

	private JPanel getStylePanel() {
		JPanel stylePanel = new JPanel();
		stylePanel.setPreferredSize(new Dimension(150 + 10, 200 + 10));
		stylePanel.setBorder(new TitledBorder("Style:"));
		stylePanel.setLayout(new FlowLayout());
		stylePanel.add(this.getStyleTextBox());
		stylePanel.add(this.getStyleScrooledList());
		return stylePanel;
	}

	private JTextField getStyleTextBox() {
		styleTextField = new JTextField();
		styleTextField.setPreferredSize(new Dimension(150, 20));
		String style = this.calculateStyle(this.getFont(), this.getFont().getFamily());
		if (style.equals("")) {
			style = "Plain";
		}
		styleTextField.setText(style);
		styleTextField.setEditable(false);
		return styleTextField;
	}

	private JScrollPane getStyleScrooledList() {
		styleList = new JList(this.getFontStyles(this.getFont().getFamily()));
		JScrollPane stylePane = new JScrollPane();
		stylePane.setViewportView(styleList);
		stylePane.setPreferredSize(new Dimension(150, 152));
		styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		String style = this.calculateStyle(this.getFont(), this.getFont().getFamily());
		if (style.equals("")) {
			style = "Plain";
		}
		styleList.setSelectedValue(style, true);

		return stylePane;
	}

	private JPanel getSizePanel() {
		JPanel sizePanel = new JPanel();
		sizePanel.setPreferredSize(new Dimension(50 + 10, 200 + 10));
		sizePanel.setBorder(new TitledBorder("Size:"));
		sizePanel.setLayout(new FlowLayout());
		sizePanel.add(this.getSizeTextBox());
		sizePanel.add(this.getSizeScrooledList());
		return sizePanel;
	}

	private JTextField getSizeTextBox() {
		sizeTextField = new JTextField();
		sizeTextField.setPreferredSize(new Dimension(50, 20));
		Integer size = new Integer(this.getFont().getSize());
		sizeTextField.setText(size.toString());
		return sizeTextField;
	}

	private JScrollPane getSizeScrooledList() {
		sizeList = new JList(this.getFontSize());
		JScrollPane sizePane = new JScrollPane();
		sizePane.setViewportView(sizeList);
		sizePane.setPreferredSize(new Dimension(50, 152));
		sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		sizeList.setSelectedValue(new Integer(this.getFont().getSize()), true);
		return sizePane;
	}

	private JPanel getPreviewPanel() {
		JPanel previewPanel = new JPanel();
		previewPanel.setBorder(new TitledBorder("Preview"));
		previewPanel.setPreferredSize(new Dimension(355, 90));
		previewPanel.setLayout(new FlowLayout());
		previewPanel.add(this.getPreviewLabel());
		return previewPanel;
	}

	private JLabel getPreviewLabel() {
		previewLabel = new JLabel("ABC abc 123");
		previewLabel.setPreferredSize(new Dimension(350, 80));
		previewLabel.setHorizontalAlignment(JLabel.CENTER);
		previewLabel.setFont(this.getFont());
		return previewLabel;
	}

	private JPanel getButtonPanel() {
		JPanel buttonPanel = new JPanel();
		buttonPanel.setPreferredSize(new Dimension(80, 60));
		buttonPanel.setLayout(new FlowLayout());
		((FlowLayout) buttonPanel.getLayout()).setVgap(5);
		buttonPanel.add(this.getOKButton());
		buttonPanel.add(this.getCancelButton());
		return buttonPanel;
	}

	private JButton getOKButton() {
		okButton = new JButton("OK");
		okButton.setPreferredSize(new Dimension(80, 25));

		return okButton;
	}

	private JButton getCancelButton() {
		cancelButton = new JButton("Cancel");
		cancelButton.setPreferredSize(new Dimension(80, 25));

		return cancelButton;
	}

	private String[] getFontStyles(String fontFamily) {
		List fontStyles = new ArrayList();
		for (int i = 0; i < fonts.length; i++) {
			Font f = fonts[i];
			if (f.getFamily().equals(fontFamily)) {
				if (f.getFontName().length() == fontFamily.length()) {
					fontStyles.add("Plain");
					continue;
				}
				fontStyles.add(this.calculateStyle(f, fontFamily));
			}
		}
		String[] str = new String[fontStyles.size()];
		for (int i = 0; i < str.length; i++) {
			str[i] = fontStyles.get(i).toString();
		}
		return str;
	}

	private String[] getFamily() {
		Set stylesSet = new TreeSet();
		for (int i = 0; i < this.fonts.length; i++) {
			stylesSet.add(this.fonts[i].getFamily());
		}
		Object[] obj = stylesSet.toArray();
		String[] str = new String[obj.length];
		for (int i = 0; i < str.length; i++) {
			str[i] = obj[i].toString();
		}
		return str;
	}

	private String calculateStyle(Font font, String fontFamily) {
		StringBuffer style = new StringBuffer(font.getFontName().replace(fontFamily, ""));
		if (style.toString().startsWith(" ")) {
			style.replace(0, 1, "");
		}
		return style.toString();
	}

	private Integer[] getFontSize() {
		Integer[] fs = new Integer[25];
		int n = 6;
		for (int i = 0; i < fs.length; i++) {
			n = n + 2;
			fs[i] = new Integer(n);
		}
		return fs;
	}

	private void updateFont() {
		String family = this.familyTextField.getText();
		String style = this.styleTextField.getText();
		Integer size = Integer.valueOf(this.sizeTextField.getText());
		if (!style.equals("Plain") && !style.contains(".")) {
			family = family + " " + style;
		} else if (!style.equals("Plain") && style.contains(".")) {
			family = family + "." + style;
		}
		this.font = new Font(family, 0, size.intValue());
		this.previewLabel.setFont(this.font);
	}

	private void eventHandling() {
		this.familyList.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				String selectedFamily = familyList.getSelectedValue().toString();
				familyTextField.setText(selectedFamily);
				styleList.setListData(getFontStyles(selectedFamily));
				styleList.setSelectedIndex(0);
			}
		});
		this.styleList.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				String selectedStyle = styleList.getSelectedValue().toString();
				styleTextField.setText(selectedStyle);
				updateFont();
			}
		});
		this.sizeList.addListSelectionListener(new ListSelectionListener() {
			public void valueChanged(ListSelectionEvent e) {
				Integer selectedSize = new Integer(sizeList.getSelectedValue().toString());
				sizeTextField.setText(selectedSize.toString());
				updateFont();
			}
		});
		this.sizeTextField.addKeyListener(new KeyAdapter() {
			public void keyTyped(KeyEvent evt) {
				if (evt.getKeyChar() < '0' || evt.getKeyChar() > '9') {
					evt.consume();
				}
			}

			public void keyReleased(KeyEvent evt) {
				String value = sizeTextField.getText();
				evt.consume();
				if (value.equals("") || value.equals("0")) {
					sizeTextField.setText("8");
				}
				sizeList.setSelectedValue(Integer.valueOf(value), true);
				updateFont();
			}
		});
		this.okButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setFont(previewLabel.getFont());
				dispose();
			}
		});
		this.cancelButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				dispose();
			}
		});
	}
}

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值