我想在JPanel上绘制字符串和矩形。
我正在向JScrollPane添加JPanel但是如果我绘制了一些字符串,则不会出现滚动条。
以下是一些代码。
package gui;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class MainView extends JFrame {
private SelfDrawnPanel sdp;
private JScrollPane jsp;
public MainView(){
super("TestProgram");
this.setSize(300, 300);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.sdp = new SelfDrawnPanel();
this.jsp = new JScrollPane(this.sdp);
this.add(this.jsp);
this.setVisible(true);
}
class SelfDrawnPanel extends JPanel {
public void paint(Graphics g) {
for (int i = 0; i < 100; i++) {
g.setColor(Color.BLACK);
g.drawString("test", 10, (i*10)+10);
}
}
}
}
答案 0 :(得分:2)
当ViewportView
组件的首选大小大于JScrollPane
的大小时,会显示滚动条。目前,JPanel
SelfDrawnPanel
的首选大小非常小(10 x 10
)。通过覆盖getPreferredSize
来设置首选大小:
@Override
public Dimension getPreferredSize() {
return new Dimension(400, 1010);
}
除此之外:Swing中的自定义绘画是通过覆盖paintComponent
而不是paint
来完成的。另请记住调用super.paintComponent(g)
并使用@Override
注释。了解自定义绘画here