У меня есть сценарий, например, когда пользователь нажимает кнопку, откроется всплывающее окно с текстовой областью. При необходимости текстовая область будет иметь некоторое содержимое со строкой прокрутки. Для этого я использовал JDialog и добавил текстовую область в JDialog. В моем случае я могу показать диалог при нажатии кнопки и текстовую область в диалоговом окне с содержимым. Но я не мог получить полосу прокрутки для текстовой области. Я также использовал JScrollPane для текстовой области.Swing TextArea с панелью прокрутки на JDialog
public class DialogPanel {
public void createDialog() {
final JFrame mainFrame = new JFrame();
mainFrame.setVisible(true);
mainFrame.setSize(500, 600);
mainFrame.setLayout(new BorderLayout());
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btn = new JButton("Open Dialog");
mainFrame.add(btn, BorderLayout.SOUTH);
JTextField txtField = new JTextField();
mainFrame.add(txtField, BorderLayout.NORTH);
btn.setPreferredSize(new Dimension(100, 100));
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JDialog dialog = new JDialog(mainFrame);
dialog.setLocationByPlatform(true);
JTextArea txtArea = new JTextArea();
txtArea.setAutoscrolls(true);
txtArea.setPreferredSize(new Dimension(900, 500));
txtArea.setBorder(BorderFactory.createLineBorder(Color.BLACK));
txtArea.setFont(new Font("courier new", Font.PLAIN, 12));
txtArea.setLineWrap(true);
JScrollPane txtAreaScroll = new JScrollPane();
txtAreaScroll.setViewportView(txtArea);
txtAreaScroll.setAutoscrolls(true);
File file;
String line = null;
StringBuilder fileContents = new StringBuilder();
try {
file = new File(
"D:\\Softwares\\Apache\\apache-tomcat-7.0.47\\RUNNING.txt");
BufferedReader reader = new BufferedReader(new FileReader(
file));
while ((line = reader.readLine()) != null) {
fileContents.append(line + "\n");
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
txtArea.setText(fileContents.toString());
dialog.add(txtAreaScroll);
dialog.pack();
dialog.setVisible(true);
}
});
}
public static void main(String[] args) {
DialogPanel dialogPanel = new DialogPanel();
dialogPanel.createDialog();
}
}
Это работает. Спасибо за решение и объяснение. :) – AJJ
Помните, Swing - это весело;) – MadProgrammer
Есть ли какой-либо случай для этого подхода при установке количества столбцов и строк текстовой области? –