我遇到了drawOval函數的問題。我用它畫圓圈,但結果看起來不像一個圓圈。 我認爲這種行爲發生在Jpanel的一定高度之後。 向下滾動至最後,您可以得到如下圖所示的結果。 任何人都可以提供解釋嗎?DrawOval的意外行爲
Result after Execute the sample program
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class TestMain
{
public static void main(String[] args)
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JScrollPane jsp = new JScrollPane();
jsp.setViewportView(new TestPanel());
f.getContentPane().add(jsp);
f.setSize(500,400);
f.setLocation(200,200);
f.setVisible(true);
}
}
class TestPanel extends JPanel
{
public TestPanel()
{
setPreferredSize(new Dimension(1960 , 77660240));
setBackground(Color.white);
}
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.drawRect(30, 77660141, 100, 20);
g2.drawOval(15, 77660141, 10, 10);
g2.draw(new Ellipse2D.Double(140, 77660141,
10,
10));
g2.draw(new Ellipse2D.Double(160, 77660141,
10,
10));
g2.draw(new Ellipse2D.Double(180, 77660141,
10,
10));
g2.draw(new Ellipse2D.Double(200, 77660141,
30,
30));
}
}
'setPreferredSize(new Dimension(1960,77660240));'......你預計77660240號碼會發生什麼?這比我當前的屏幕高出70 ** 000 **倍! –
那麼使用JScrollPane有什麼好處? – MMM
滾動窗格用於說明比可用可顯示空間大的組件。但不是那些**可笑地大於可用空間的組件。例如,考慮滑塊欄的事情。它縮放,以便更長的物體會產生更小的滑塊。但在70,000倍的差異,滑塊將'邏輯上'是一個像素高的一小部分!還有一個問題,即JRE是否有足夠的內存來處理這樣的大對象。如果我知道最終目的,我可能會提出更好的策略。 –