2016-09-06 4 views
1

Как видно из названия, я хочу рисовать на JPanel и отображать его в JScrollpane, поэтому, если содержимое в JPanel велико, отображаются полосы прокрутки. Я пытался сделать это с помощью:Картина на JPanel и добавление ее в JScrollPane

import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 

public class Main extends JFrame{ 

DrawPanel dp; 
JScrollPane jsp; 

public Main(){ 
    setTitle("Test"); 
    setSize(400,400); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    dp = new DrawPanel(); 
    jsp = new JScrollPane(dp); 
    getContentPane().add(jsp); 
} 

public class DrawPanel extends JPanel{ 

    @Override 
    protected void paintComponent(Graphics grphcs) { 
     super.paintComponent(grphcs); 
     Graphics2D g2d = (Graphics2D) grphcs; 
     g2d.drawString("..long text....long text....long text....long text....long text....long text....long text....long text..", 10, 20); 
    } 

} 

public static void main(String[] args) { 
    new Main().setVisible(true); 
} 

} 

Current Output

Ожидаемый выход: Окно с длинным текстом и горизонтальной прокрутки.

Я также попытался переопределить метод getPreferredSize (как некоторые ответы в других предложенных вопросах), но он, похоже, не работает. Кроме того, может ли кто-нибудь объяснить, почему появляются полосы прокрутки (используя jscrollpane), когда на панели есть метки или кнопки, которые добавляются в jscrollpane, но то же самое не работает в случае выше? Любая помощь будет высоко ценится.

+0

Вы должны изменить размер jpanel. – matt

+0

Я попытался это сделать, переопределив метод setSize в DrawPanel, я получил следующий вывод: [link] (http://imgur.com/a/28xTW) –

ответ

0

Вы можете изменить размер JPanel, установив размер (ы) или переопределив их.

Dimension d = new Dimension(800, 800); 
    dp.setMinimumSize(d); 
    dp.setMaximumSize(d); 
    dp.setPreferredSize(d); 

Полоса прокрутки появляется, когда я это делаю.

+0

Я не знаю, почему я никогда не думал о настройке min и максимальный размер. Спасибо, это работает. –

+0

Да, есть много разных способов компоновки компонентов, это может быть немного запутанным, какие из них работают и где. – matt

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