|
| 1 | +import java.awt.*; |
| 2 | +import java.awt.event.*; |
| 3 | +import javax.swing.*; |
| 4 | +import javax.swing.text.*; |
| 5 | + |
| 6 | +public class TextLineNumberTest |
| 7 | +{ |
| 8 | + public static void main(String[] args) |
| 9 | + { |
| 10 | + JPanel panel = new JPanel(); |
| 11 | + panel.setBorder(BorderFactory.createEmptyBorder(10,20,20,20)); |
| 12 | + panel.setLayout(new BorderLayout()); |
| 13 | + |
| 14 | + String text = |
| 15 | + "Typically the same font would be used for the entire text component.\n\n" + |
| 16 | + "However, this component now supports multiple fonts and font sizes.\n\n" + |
| 17 | + "Test it out using the buttons below.\n"; |
| 18 | + |
| 19 | +// String text = |
| 20 | +// "<html>line1<br>line2<br>line3<br></html>"; |
| 21 | + |
| 22 | + final JTextPane textPane = new JTextPane(); |
| 23 | +// textPane.setContentType("text/html"); |
| 24 | +// final JTextArea textPane = new JTextArea(); |
| 25 | +// textPane.setLineWrap(true); |
| 26 | +// textPane.setFont( new Font("monospaced", Font.PLAIN, 36) ); |
| 27 | + textPane.setText(text); |
| 28 | + |
| 29 | + JScrollPane scrollPane = new JScrollPane(textPane); |
| 30 | + panel.add(scrollPane); |
| 31 | + scrollPane.setPreferredSize(new Dimension(300, 250)); |
| 32 | + |
| 33 | + |
| 34 | + TextLineNumber lineNumber = new TextLineNumber(textPane, 3); |
| 35 | +// lineNumber.setUpdateFont(true); |
| 36 | + lineNumber.setUpdateFont(false); |
| 37 | + float fontSize = textPane.getFont().getSize() - 6; |
| 38 | + Font font = textPane.getFont().deriveFont( fontSize ); |
| 39 | +// lineNumber.setFont(font); |
| 40 | +// lineNumber.setBorderGap(20); |
| 41 | +// lineNumber.setForeground(Color.ORANGE); |
| 42 | +// lineNumber.setDigitAlignment(TextLineNumber.LEFT); |
| 43 | + |
| 44 | +// float fontSize = component.getFont().getSize() - 0.0f; |
| 45 | +// componentFont = component.getFont().deriveFont( fontSize ); |
| 46 | + scrollPane.setRowHeaderView( lineNumber ); |
| 47 | + |
| 48 | + JPanel buttons = new JPanel( new FlowLayout(FlowLayout.CENTER, 5, 5) ); |
| 49 | + |
| 50 | + buttons.add( new JButton(new StyledEditorKit.FontSizeAction("Font 12", 12))); |
| 51 | + buttons.add( new JButton(new StyledEditorKit.FontSizeAction("Font 16", 16))); |
| 52 | + buttons.add( new JButton(new StyledEditorKit.FontSizeAction("Font 20", 20))); |
| 53 | + buttons.add( new JButton(new StyledEditorKit.FontSizeAction("Font 24", 24))); |
| 54 | + |
| 55 | + panel.add(buttons, BorderLayout.SOUTH); |
| 56 | + |
| 57 | + JFrame.setDefaultLookAndFeelDecorated(true); |
| 58 | + JFrame frame = new JFrame("Text Component Line Number"); |
| 59 | + frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); |
| 60 | + frame.setContentPane( panel ); |
| 61 | + frame.setSize(500, 240); |
| 62 | + frame.setLocationRelativeTo( null ); |
| 63 | + frame.setVisible(true); |
| 64 | + } |
| 65 | +} |
0 commit comments