我想在JPanel上绘制字符串和矩形。
我正在将JPanel添加到JScrollPane,但是如果绘制一些String,则不会出现滚动条。
这是一些示例代码。
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);
}
}
}
}
最佳答案
当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