2012-02-06 3 views
0

У меня есть текстовый редактор с Netbeans, где я загружаю текст в JtextPane. Если текст слишком большой, вы можете его прочитать с помощью горизонтального прокрутки. Есть ли способ разделить текст на страницы из 24 строк, например, чтобы каждая страница была видна без прокрутки и использовала кнопку следующей страницы для смены страницы (как электронные книги)?Сделать JtextPane выглядит как eBook

+0

да, что это возможно, уведомление -> написал код своими руками, не используйте JComponents со встроенным -in palette – mKorbel

ответ

1

Для этого проще использовать JTextArea, поскольку вы можете легко указать количество строк, отображаемых при каждом прокрутке на новую страницу.

Основным решением является добавление текстовой области в область прокрутки, а затем скрытие полос прокрутки. Затем вы можете использовать действия по умолчанию для вертикальной полосы прокрутки для прокрутки для вас. Приведенный ниже код использует код от входа в Action Map Action блога легко создать действие, которое вы можете добавить к JButton:

import java.awt.*; 
import java.awt.event.*; 
import java.io.*; 
import javax.swing.*; 

public class TextAreaScroll extends JPanel 
{ 
    private JTextArea textArea; 

    public TextAreaScroll() 
    { 
     setLayout(new BorderLayout()); 

     textArea = new JTextArea(10, 80); 
     textArea.setEditable(false); 

     JScrollPane scrollPane = new JScrollPane(textArea); 
     scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); 
     add(scrollPane); 

     JButton load = new JButton("Load TextAreaScroll.java"); 
     load.addActionListener(new ActionListener() 
     { 
      public void actionPerformed(ActionEvent e) 
      { 
       try 
       { 
        FileReader reader = new FileReader("TextAreaScroll.java"); 
        BufferedReader br = new BufferedReader(reader); 
        textArea.read(br, null); 
        br.close(); 
       } 
       catch(Exception e2) { System.out.println(e2); } 
      } 
     }); 
     add(load, BorderLayout.NORTH); 

     // Add buttons to do the scrolling 

     JScrollBar vertical = scrollPane.getVerticalScrollBar(); 

     Action nextPage = new ActionMapAction("Next Page", vertical, "positiveBlockIncrement"); 
     nextPage.putValue(AbstractAction.MNEMONIC_KEY, KeyEvent.VK_N); 
     JButton nextButton = new JButton(nextPage); 

     Action previousPage = new ActionMapAction("Previous Page", vertical, "negativeBlockIncrement"); 
     previousPage.putValue(AbstractAction.MNEMONIC_KEY, KeyEvent.VK_N); 
     JButton previousButton = new JButton(previousPage); 

     JPanel south = new JPanel(); 
     add(south, BorderLayout.SOUTH); 
     south.add(previousButton); 
     south.add(nextButton); 
    } 

    private static void createAndShowUI() 
    { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new TextAreaScroll()); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       createAndShowUI(); 
      } 
     }); 
    } 
} 
+0

простой и приятный +1 – mKorbel

+0

Когда я показываю страницу, которую я выбираю, я хочу быть Jtextpane, чтобы сделать что-то еще. Есть ли способ сделать это? – drew

+0

Я понятия не имею, о чем вы спрашиваете, но я вернусь к вам через 9 дней, так как вопрос не так важен для вас. – camickr