2015-09-02 2 views
1

Недавно у меня появилось требование отобразить файл слов в пределах JFrame. С этой ссылкой я смог добиться того, чего хочу (Open MS documents into JFrame). Мне нужно отображать текстовый файл и файл PDF рядом с JFrame.Как отобразить два холста в jFrame java

В ссылке, упомянутой выше, файл слова был отображен в JFrame через Canvas от SWT.

Я хотел бы знать:

  1. Можно ли добавить два полотна к одному JFrame.
  2. Если нет, можно ли отобразить документ в формате Word или файл PDF в файле JPanel (так как я знаю, что возможно добавление двух панелей к кадру)?
+3

Это монументально тривиальная проблема, которая может быть выражена без какой-либо ссылки на то, что показано в кадре. Например, выясните, как показать 2 ярлыка ('JLabel') или 2 панели (' JPanel') и решение для холста SWT будут очевидны (сделайте то же самое с другим компонентом). Когда SWT удаляется из вопроса, это также означает, что Eclipse не имеет значения. Что касается ответа, есть много, * много * вариантов, как показано в [этом ответе] (http://stackoverflow.com/a/9554657/418556). Выберите тот, который будет работать для этого прецедента, затем попробуйте что-нибудь. Голосование закрывается. –

+2

* ".. возможно ли вывести текстовый документ или файл PDF в« JPanel »(поскольку я знаю, что возможно добавление двух панелей в кадр)» *. Все, что можно добавить в 'JFrame' может быть добавлен в 'JPanel'! Попробуйте. –

ответ

1

В примере, который вы связали, холст добавляется непосредственно в область содержимого JFrame. Что вам нужно сделать, так это сначала вставить JPanel с Layout в JFrame, а затем добавить один или несколько объектов Canvas к макету. Ниже приведен тривиальный пример с макетом по умолчанию FlowLayout, не стесняйтесь изменять его, чтобы использовать другой менеджер компоновки или добавить JScrollPane или JSplitPane в зависимости от того, какой формат вы хотите.

JPanel panel = new JPanel(); //Default layout manager is FlowLayout 
//You could change the layout here with panel.setLayout(new ..Layout); 
frame.getContentPane().add(panel); 
panel.add(canvas1); 
panel.add(canvas2); 

Here - полезная ссылка на менеджеров макетов. Посмотрите пример на BorderLayout, если вы хотите добавить меню и т. Д. В свою рамку.

+0

@AndrewThompson Согласен, он должен указывать, что свитки и разбиения добавляются к макетам – milez

+0

Great edit .. :) –

Смежные вопросы