0
我JScrollPane的內部JPanel並它,每當我試圖滾動。請幫忙! 我該如何解決這個問題?
編輯
JScrollPane pane;
....
pane = new JScrollPane(GC.createGraph());
pane.setPreferredSize(new Dimension(480,480*2/3));
我JScrollPane的內部JPanel並它,每當我試圖滾動。請幫忙! 我該如何解決這個問題?
編輯
JScrollPane pane;
....
pane = new JScrollPane(GC.createGraph());
pane.setPreferredSize(new Dimension(480,480*2/3));
配售事項給別人看的答案。如果你不調用super.paintComponent,你會得到這些工件。例如,
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;
public class ScrollPaneArtifacts extends JPanel {
private static final int SPA_WIDTH = 600;
private static final int SPA_HEIGHT = SPA_WIDTH;
@Override
protected void paintComponent(Graphics g) {
//super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(0, 0, getWidth(), getHeight());
g.drawLine(getWidth(), 0, 0, getHeight());
}
@Override
public Dimension getPreferredSize() {
return new Dimension(SPA_WIDTH, SPA_HEIGHT);
}
private static void createAndShowUI() {
JScrollPane scrollpane = new JScrollPane(new ScrollPaneArtifacts());
scrollpane.getViewport().setPreferredSize(new Dimension(400, 400));
JFrame frame = new JFrame("ScrollPaneArtifacts");
frame.getContentPane().add(scrollpane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}
你並不需要調用super.paintComponent方法,你可以簡單地清除該地區,以確保沒有文物留在面板上從以前渲染(其中調用super.paintComponent方法都行)。
@Override
protected void paintComponent(Graphics g) {
g.clearRect(0,0,getWidth(),getHeight());
g.setColor(Color.red);
g.drawLine(0, 0, getWidth(), getHeight());
g.drawLine(getWidth(), 0, 0, getHeight());
}
如果你願意,可以在Hovercrafts代碼中試試。
您的代碼中存在一個錯誤,它會描繪持有的JPanel,例如可能缺少對super.paintComponent(...)或super.paint(...)的調用,但是,如果沒有代碼,我我不確定我們如何幫助你。請考慮創建併發布[sscce](http://sscce.org) –
究竟發生了什麼?即使你滾動100%,你的內容隱藏在下面?向右還是向下? –
向JScrollPane拋出正在運行的JPanel後沒有代碼scrollPane在我嘗試滾動時創建工件。而圖片(完整)應該是一個很大的薄X. –