У меня есть текстовый редактор с Netbeans, где я загружаю текст в JtextPane. Если текст слишком большой, вы можете его прочитать с помощью горизонтального прокрутки. Есть ли способ разделить текст на страницы из 24 строк, например, чтобы каждая страница была видна без прокрутки и использовала кнопку следующей страницы для смены страницы (как электронные книги)?Сделать JtextPane выглядит как eBook
0
A
ответ
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();
}
});
}
}
да, что это возможно, уведомление -> написал код своими руками, не используйте JComponents со встроенным -in palette – mKorbel