我想建立一個應用程序,我打算創建一些基本的動畫。我的目標是在上面繪製圖形的面板和下面帶有常規按鈕和標籤的面板。如何在形狀中繪製shapens?
我已經完成了下面介紹的代碼,但是我沒有在先前繪製的矩形內繪製矩形。我相信我的問題是我正在調用一個類(矩形)來繪製擴展JPanel的矩形,這意味着每次我嘗試繪製一個新的矩形時,都會創建一個不與前一個矩形重疊的新面板!
編輯
我擡頭看一些例子,最後能想出一個代碼來生成形狀(矩形這種情況下),因爲我需要他們在同一個面板上。我對代碼做了一些更改,下面是新代碼。
L.java
import java.awt.Color;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
class L extends JFrame {
public static final int ww = 1000;
public static final int wh = 600;
public static final String wt = "Teste";
Container pane = getContentPane();
DrawRectangle rectangle = new DrawRectangle();
public L() {
setSize(ww,wh);
this.setTitle(wt);
Sim();
pane.add(rectangle);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void addRectangle(int px, int py, int pwh, Color pc) {
this.rectangle.addRectangle(px, py, pwh, pc);
}
public void Sim() {
addRectangle(100,100,250,Color.red);
addRectangle(200,200,50,Color.green);
}
public static void main(String[] args) {
L l = new L();
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
//}
}
}
DrawRectangle.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import javax.swing.JPanel;
class DrawRectangle extends JPanel {
private java.util.List<Rectangle2D> squares;
private java.util.List<Color> colors;
//private int a, startX, startY;
public DrawRectangle(){
squares = new ArrayList<Rectangle2D>();
colors = new ArrayList<Color>();
}
public void addRectangle(int px, int py, int pwh, Color pc) { // square
squares.add(new Rectangle2D.Double(px, py, pwh, pwh)) ;
colors.add(pc);
//this.a = a;
//this.startX = startX;
//this.startY = startY;
}
public void paintComponent(Graphics g) {
Graphics2D g1 = (Graphics2D) g;
for(Rectangle2D rect : squares) {
System.out.println(colors);
g1.setColor(colors);
g1.draw(rect);
}
}
}
一個新的問題現在已經站起身!我做錯了什麼,我不能使用顏色我傳遞給方法來繪製不同顏色的形狀?
那麼第一件事是你的Rectangle類不能擴展一個JPanel類,如果你想在一個面板上繪製多個矩形 – 2012-07-09 17:35:54
謝謝你的回答!我環顧四周,設法做了一些有用的事情。但是,我有一個新的小問題,介意看看它? – 2012-07-09 22:10:11
@LuisAfonsoTeixeira提出問題,獲得答案,然後在同一帖子中提出另一個問題被認爲是不好的形式。如果您需要現場調試會話方面的幫助,我認爲Stack Overflow不是執行此操作的最佳位置。 – 2013-03-19 17:17:40