Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.omg.CORBA.Environment;
- import javax.swing.*;
- import javax.swing.event.ListSelectionEvent;
- import javax.swing.event.ListSelectionListener;
- import javax.swing.text.Position;
- import javax.swing.text.SimpleAttributeSet;
- import javax.swing.text.StyleConstants;
- import javax.swing.text.StyledDocument;
- import java.awt.*;
- import java.awt.event.*;
- import java.beans.PropertyChangeListener;
- import java.io.*;
- public class mainForm {
- private static JFrame frame;
- private JPanel panelMain;
- private JComboBox comboBox1;
- private JComboBox comboBox2;
- private JTextPane textPane;
- private Font[] fonts;
- Font defaultFont;
- Font forChangingFont;
- DefaultListModel<Integer> startIndexesModel;
- DefaultListModel<Integer> lengthsModel;
- DefaultListModel<Integer> IgnoreStartIndexesModel;
- JList<Integer> startIndexes;
- JList<Integer> lengths;
- JList<Integer> IgnoreStartIndexes;
- public mainForm() {
- // Инициализация массивов
- startIndexesModel = new DefaultListModel<>();
- lengthsModel = new DefaultListModel<>();
- IgnoreStartIndexesModel = new DefaultListModel<>();
- startIndexes = new JList<>(startIndexesModel);
- lengths = new JList<>(lengthsModel);
- IgnoreStartIndexes = new JList<>(IgnoreStartIndexesModel);
- GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
- fonts = graphicsEnvironment.getAllFonts();
- frame = new JFrame("");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setLayout(null);
- textPane = new JTextPane();
- comboBox1 = new JComboBox<>(fonts);
- comboBox2 = new JComboBox<>(fonts);
- JLabel label = new JLabel();
- JLabel label2 = new JLabel();
- textPane.setBounds(10,10, 300, 100);
- textPane.setText("В стране проживает 1434577 студента. 146 из которых в вашем городе. 1444 в соседнем.");
- comboBox1.setBounds(10,50+70,150,26);
- comboBox2.setBounds(10,50+70+36,150,26);
- label.setBounds(150+20, 50+70, 150,20);
- label.setText("Шрифт всего текста");
- label2.setBounds(150+20, 50+70+36, 200,20);
- label2.setText("Шрифт текста для изменения");
- textPane.setFont(new Font("Segoe UI", Font.PLAIN, 18));
- frame.add(textPane);
- frame.add(comboBox1);
- frame.add(comboBox2);
- frame.add(label);
- frame.add(label2);
- frame.setBounds(0,0, 380, 250);
- DefaultListCellRenderer defRenderer = new DefaultListCellRenderer() {
- @Override
- public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
- if(value != null)
- value = ((Font)value).getFontName();
- return super.getListCellRendererComponent(list, value, index,
- isSelected, cellHasFocus);
- }
- };
- comboBox1.setRenderer(defRenderer );
- for(int i = 0; i < fonts.length; i++)
- if(fonts[i].getFontName().equals("Segoe UI")) {
- comboBox1.setSelectedIndex(i);
- comboBox2.setSelectedIndex(i);
- break;
- }
- comboBox2.setRenderer(defRenderer );
- frame.setVisible(true);
- comboBox1.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Font font = (Font)comboBox1.getSelectedItem();
- defaultFont = new Font(font.getFontName(), font.getStyle(), 18);
- textPane.setFont(defaultFont);
- }
- });
- comboBox2.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Font font = (Font)comboBox2.getSelectedItem();
- forChangingFont = new Font(font.getFontName(), font.getStyle(), 18);
- parseText();
- }
- });
- textPane.addKeyListener(new KeyAdapter() {
- @Override
- public void keyReleased(KeyEvent e) {
- if(e.getKeyCode() == KeyEvent.VK_F2)
- ProcessKey(true);
- else
- ProcessKey(false);
- super.keyReleased(e);
- }
- });
- }
- public static void main(String[] args) {
- mainForm form = new mainForm();
- }
- private void parseText() {
- { // Изменить шрифт всего текста на дефолтный
- SimpleAttributeSet attrSet = new SimpleAttributeSet();
- StyleConstants.setFontFamily(attrSet, defaultFont.getFamily());
- StyleConstants.setBold(attrSet, defaultFont.isBold());
- StyleConstants.setItalic(attrSet, defaultFont.isItalic());
- StyledDocument styledDocument = textPane.getStyledDocument();
- styledDocument.setCharacterAttributes(0, textPane.getText().length(), attrSet, true);
- }
- int startIndex = -1;
- int length = 1;
- lengthsModel = new DefaultListModel<>();
- startIndexesModel = new DefaultListModel<>();
- String text = textPane.getText();
- for (int i = text.length() - 1; i > 0; i--) {
- if (text.charAt(i) >= '0' && text.charAt(i) <= '9')
- if (startIndex == -1)
- startIndex = i;
- else length++;
- else {
- if (length > 3)
- if (!IgnoreStartIndexesModel.contains(startIndex - length + 1)) {
- lengthsModel.addElement(length);
- startIndexesModel.addElement(startIndex - length + 1);
- SimpleAttributeSet attrSet = new SimpleAttributeSet();
- StyleConstants.setFontFamily(attrSet, forChangingFont.getFamily());
- StyleConstants.setBold(attrSet, forChangingFont.isBold());
- StyleConstants.setItalic(attrSet, forChangingFont.isItalic());
- StyledDocument styledDocument = textPane.getStyledDocument();
- styledDocument.setCharacterAttributes(startIndex - length + 1, length, attrSet, true);
- }
- length = 1;
- startIndex = -1;
- }
- }
- }
- private void ProcessKey(boolean isF2)
- {
- int selectionStart = textPane.getCaretPosition();
- for (int j = 0; j < startIndexesModel.size(); j++)
- if (selectionStart >= startIndexesModel.elementAt(j) &&
- selectionStart <= (startIndexesModel.elementAt(j) + lengthsModel.elementAt(j)))
- if (isF2)
- {
- int numbersInRow = 0;
- for (int k = (startIndexesModel.elementAt(j) + lengthsModel.elementAt(j)) - 1; k > startIndexesModel.elementAt(j); k--)
- {
- numbersInRow++;
- if (numbersInRow % 3 == 0)
- {
- for (int a = 0; a < IgnoreStartIndexesModel.size(); a++)
- if (IgnoreStartIndexesModel.elementAt(a) > k)
- IgnoreStartIndexesModel.set(a, IgnoreStartIndexesModel.elementAt(a) + 1);
- textPane.setText(textPane.getText().substring(0,k) + " " + textPane.getText().substring(k--));
- lengthsModel.set(j, lengthsModel.elementAt(j) + 1);
- numbersInRow++;
- }
- }
- parseText();
- textPane.select(selectionStart,selectionStart);
- break;
- }
- else
- {
- IgnoreStartIndexesModel.addElement(startIndexesModel.elementAt(j));
- parseText();
- textPane.select(selectionStart,selectionStart);
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement