Как видно из названия, я хочу рисовать на 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);
}
}
Ожидаемый выход: Окно с длинным текстом и горизонтальной прокрутки.
Я также попытался переопределить метод getPreferredSize (как некоторые ответы в других предложенных вопросах), но он, похоже, не работает. Кроме того, может ли кто-нибудь объяснить, почему появляются полосы прокрутки (используя jscrollpane), когда на панели есть метки или кнопки, которые добавляются в jscrollpane, но то же самое не работает в случае выше? Любая помощь будет высоко ценится.
Вы должны изменить размер jpanel. – matt
Я попытался это сделать, переопределив метод setSize в DrawPanel, я получил следующий вывод: [link] (http://imgur.com/a/28xTW) –