2016-02-12 206 views
0

我在BasicStroke Outline = new BasicStroke(10f, 50, 50);中創建描邊形狀時遇到問題。我目前得到的錯誤是錯誤:創建描邊形狀

can't find symbol canvas.setStroke(Outline) pointing to the dot.

我是新來的構造函數,因此任何幫助將是巨大的,我做了類似這樣的唯一的事情是創造的Scanner一個實例。

import javax.swing.JFrame; 
import java.awt.Graphics; 
import java.awt.Color; //sets color 
import java.awt.BasicStroke; 
import java.awt.Graphics2D; 
public class ColoredOlypmicRings extends JFrame 
{ 
//varriables go here 


public void paint(Graphics canvas) 
{ 
super.paint (canvas); 

canvas.setColor(Color.green); 
canvas.drawOval(100,100,100,100); //color green 
canvas.setColor(Color.red); 
canvas.drawOval(200,200,100,100); //color red 
final BasicStroke Outline = new BasicStroke(10f, 50, 50); 
canvas.setStroke(Outline); 

canvas.drawOval(300,300,200,200); 
} 

public ColoredOlypmicRings() 
{ 
setSize(600,400); 
setDefaultCloseOperation(EXIT_ON_CLOSE); 
} 

public static void main(String[] args) 
{ 
ColoredOlypmicRings guiWindow = new ColoredOlypmicRings(); 
guiWindow.setVisible(true); 
} 
} 
+0

查看樣本示例:https://docs.oracle.com/javase/tutorial/2d/geometry/strokeandfill.html – YoungHobbit

回答

3

Graphics class不能處理筆畫,並沒有爲它設置爲its API會告訴你的方法。

另一方面,Graphics2D class可以處理這個類,應該用來處理它。因此將您的Graphics對象轉換爲Graphics2D對象。

例如,

@Override 
protected void paintComponent(Graphics g) { 
    Graphics2D g2 = (Graphics2D) g; 
    g2.setStroke(....); // do it here after casting 
} 

因爲你沒有正確使用構造,傳遞不正確的參數還檢查了的BasicStroke API。

其他問題:

  • 不要在一個JFrame或其他頂級窗口直接繪製。
  • 改爲在JFrame中顯示的JPanel的paintComnponent方法中繪製。
  • 三個int BasicStroke構造函數被誤用,因爲第二個和第三個參數應該是代表Stroke對象的cap和join狀態的常量。