Прокрутка панели - Java
Формулировка задачи:
Подскажите, пожалуйста, как исправить код.
Нужно, чтобы форма содержала панель (на скрине синяя рамка). А эта панель, в свою очередь, содержала панель (красная рамка), которая будет прокручиваться в ней. Но при этом синяя рамка должна быть меньше размера формы. Пока выходит только так, как на скрине
import java.awt.*;
import javax.swing.*;
public class MyClass extends JFrame {
public MyClass() throws HeadlessException {
JPanel panel1 = new JPanel();
panel1.setBorder(BorderFactory.createLineBorder(Color.blue));
JPanel panel = new JPanel();
panel1.setBorder(BorderFactory.createLineBorder(Color.blue));
panel.setBorder(BorderFactory.createLineBorder(Color.red));
panel.setPreferredSize(new Dimension(800, 800));
panel.setBackground(Color.WHITE);
JScrollPane scroll = new JScrollPane(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(scroll);
add(panel1);
panel1.setSize(300,300);
panel1.setVisible(true);
setSize(500, 500);
setVisible(true);
}
public static void main(final String[] args) throws Exception {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override public void run()
{ new MyClass().setVisible(true);
} });
}}Решение задачи: «Прокрутка панели»
textual
Листинг программы
import java.awt.*;
import javax.swing.*;
public class MyClass extends JFrame {
public MyClass() throws HeadlessException {
JPanel panel1 = new JPanel();
panel1.setBorder(BorderFactory.createLineBorder(Color.blue));
panel1.setSize(300,300);
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createLineBorder(Color.red));
panel.setPreferredSize(new Dimension(800, 800));
panel.setBackground(Color.WHITE);
JScrollPane scroll = new JScrollPane();
scroll.setViewportView(panel);
panel1.setLayout(new BorderLayout());
panel1.add(scroll);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
add(panel1);
setSize(500, 500);
setVisible(true);
}
public static void main(final String[] args) throws Exception {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override public void run()
{ new MyClass().setVisible(true);
} });
}}