我正在嘗試使用JScrollPane來處理我正在處理的項目,並且發現了一個問題。當第一次調用帶有繪圖的框架時,內部的圖紙看起來很好。但是,當我使用滾動條滾動時,圖紙彼此「重疊」並且弄亂了整個事物。現在我認爲這是因爲我的項目很複雜,所以我試圖以一種更簡單的方式來做到這一點。我結束了同樣的結果。我附:l,瞬間就變成了錯誤代碼(簡版),以及圖片:JScrollbar中的paintComponent
JPanel類的,我在那裏做繪圖:
entepublic class PaintThis extends JPanel {
public PaintThis()
{
setBorder(new LineBorder(Color.RED));
setPreferredSize(new Dimension(1000, 1000));
}
public void paintComponent(Graphics graphics)
{
graphics.setColor(Color.RED);
graphics.fillOval(0, 0, 30, 30);
graphics.drawOval(0, 50, 30, 30);
graphics.fillRect(50, 0, 30, 30);
graphics.drawRect(50, 50, 30, 30);
} }
,我繪製框架類:
public class CreatePanel {
public CreatePanel()
{
JFrame frame = new JFrame("Test");
JScrollPane scroll = new JScrollPane(new PaintThis());
frame.setSize(300, 300);
frame.setVisible(true);
frame.add(scroll);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} }
而就在主文件:
public class theTest {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
CreatePanel panel = new CreatePanel();
}}
現在這些是R圖像esult:
初始圖像(當我啓動程序)
當我滾動
當我回到原來的位置
非常感謝您爲您提供的任何幫助。我在這裏呆了近一個星期,我真的試圖自己尋找解決方案。
再次感謝!
@peeskillet:對不起。並感謝提醒我有關保護。 '@覆蓋'也是。 –
非常感謝!我沒有意識到這是它的重要組成部分。一週的代碼看,一行代碼。我真是個白癡。再次感謝! –
@PaoloPapa:你不是白癡,因爲圖形程序沒有什麼直覺(至少對我來說),所以它需要學習新的規則。祝你好運! –