Я намагаюся вставити веб-сторінку в JScrollPaneякий знаходиться в JEditorPane, який є прямокутником всередині JFrame, як в HTML, як у вас є веб-сторінка, а потім може мати невеликий прямокутник десь на веб-сторінці, яка має iframe іншої веб-сторінки. Причина, по якій у мене є прямокутник, визначений за допомогою setBounds, полягає в тому, що прямокутник менше, ніж фактичне вікно, оскільки у вікні є інші елементи.
JEditorPane web = new JEditorPane();
web.setEditable(false);
try {
web.setPage("http://www.example.com");
}catch (IOException e) {
web.setContentType("text/html");
web.setText("<html>Could not load</html>");
}
final JScrollPane scrollPane = new JScrollPane(web);
getContentPane().add(scrollPane);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
scrollPane.getVerticalScrollBar().setValue(0);
}
});
scrollPane.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setPreferredSize(new Dimension(250, 145));
scrollPane.setMinimumSize(new Dimension(10, 10));
rweb = new Rectangle(20, 20, 1150, 600);
web.setBounds(rweb);
window.add(web);
Відповіді:
3 для відповіді № 1Я спростив ваш код. Наступні роботи.
У вас було багато додаткових заяв, які ускладнювали такі речі, як додавання web
два рази (один раз для прокрутки та один раз для JFrame).
Інший приклад scrollPane.getVerticalScrollBar().setValue(0);
. За промовчанням смуга прокрутки починається з нуля.
import java.awt.Dimension;
import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
public class webPane extends JFrame {
public static void main(String args[])
{
webPane e = new webPane();
e.setVisible(true);
}
public webPane() {
JEditorPane web = new JEditorPane();
web.setEditable(false);
try {
web.setPage("http://www.cnn.com");
} catch (IOException e) {
web.setContentType("text/html");
web.setText("<html>Could not load</html>");
}
final JScrollPane scrollPane = new JScrollPane(web);
getContentPane().add(scrollPane);
this.setBounds( 0, 0, 200, 200);
}
}
2 для відповіді № 2
Чому ви використовуєте setBounds()
? Це робить ваш JEditorPane
незмінні розміри і JScrollPane
працює тільки, якщо змінюється розмір. Видалити setBounds()
.
Крім того, ви додаєте JEditorPane
до вашого вікна, а не до JScrollBar
тому ви пропускаєте функціональність JScrollBar
.
Так що просто зміна останніх рядків виправляє вашу проблему
//rweb = new Rectangle(20, 20, 1150, 600);
//web.setBounds(rweb);
window.add(scrollPane);