2
A
回答
1
1
什麼是拖動多個圖像的最佳方法?我已經使用Java2D將兩個圖像繪製到JPanel,但我只能拖動它們中的一個。我會附上我的源代碼。我的解決方案的問題是我需要重新繪製整個窗口,即使我只是操縱一個元素。是否可以處理卡片的對象,而不是它們的圖像?所以,當我移動一卡,我會移動對象的視覺呈現,而不是像(像現在這樣)。
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Java2d_MainPanel extends JPanel{
private static BufferedImage img = new logic.GetBufferedImage().getImage();
private JButton knapp = new JButton("Nytt bilde");
private JButton knapp2 = new JButton("Nytt bilde2");
private static BufferedImage img2 = new logic.GetBufferedImage().getImage2();
//coordinates for image 1
private int x1 = 0;
private int y1 = 0;
//coordinates for image 2
private int x2 = 50;
private int y2 = 50;
public Java2d_MainPanel(){
add(knapp);
add(knapp2);
knapp.addActionListener(new ButtonHandler());
knapp2.addActionListener(new ButtonHandler2());
addMouseMotionListener(new MouseMotionHandler());
}
public void newImage(ActionEvent e){
if(e.getSource().equals(knapp)){
img = new logic.GetBufferedImage().getImage();
repaint();
}
else if(e.getSource().equals(knapp2)){
img2 = new logic.GetBufferedImage().getImage2();
repaint();
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
newPaint(g2d);
}
public void newPaint(Graphics2D g2d){
g2d.drawImage(img, x1, y1, null);
g2d.drawImage(img2, x2, y2,null);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Rabbits");
frame.add(new Java2d_MainPanel());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 640);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
class MouseMotionHandler extends MouseMotionAdapter {
@Override
public void mouseDragged(MouseEvent e) {
x1 = e.getX()-(img.getWidth()/2);
y1 = e.getY()-(img.getHeight()/2);
repaint();
}
}
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent e) {
newImage(e);
}
}
class ButtonHandler2 implements ActionListener{
public void actionPerformed(ActionEvent e) {
newImage(e);
}
}
}
相關問題
- 1. 創建標準紙牌遊戲(iPhone SDK)
- 2. HTML5紙牌遊戲
- 3. Java - 製作紙牌遊戲,有關於課程的問題
- 4. Java中的紙牌遊戲問題
- 5. 對單人紙牌遊戲的建議
- 6. Bluej的紙牌遊戲
- 7. vhdl testbench的紙牌遊戲?
- 8. 如何翻轉紙牌遊戲中的紙牌?
- 9. Java多人紙牌遊戲AI集成
- 10. Java程序 - 紙牌遊戲戰爭
- 11. 紙牌遊戲設計
- 12. C,紙牌遊戲WAR
- 13. 紙牌遊戲模擬list.remove
- 14. HTML 5 Canvas紙牌遊戲
- 15. c#,代表,紙牌遊戲
- 16. 紙牌遊戲設計
- 17. 紙牌遊戲:win play
- 18. AI設計紙牌遊戲
- 19. 關於在html上實現紙牌遊戲的建議
- 20. 創建簡單遊戲的提示.net
- 21. 在紙牌遊戲中的mvc設計
- 22. 開發Android的在線紙牌遊戲
- 23. 不使用陣列的紙牌遊戲
- 24. Android的紙牌遊戲隨機()
- 25. 簡單的python紙牌遊戲
- 26. 與WCF和WPF的紙牌遊戲
- 27. 更新紙牌遊戲的分數
- 28. 如何填充,洗牌,處理紙牌遊戲
- 29. 巖紙剪刀Java遊戲
- 30. Java:在線紙牌遊戲庫/類/例如
提示 - 如果你打你的卡,你會發現,有人已經爲你實現了這一點:-) – 2010-04-07 07:42:46
我從堆棧中繪製一張卡片,它是... CardLayout,omg有多麼偉大=) – jonas 2010-04-07 08:01:12
在Java中創建紙牌遊戲的最佳方式可能是*不*嘗試使所有內容搖擺。相反:儘可能少地使用Swing。一個JFrame,一個JLabel,它的ImageIcon是一個BufferedImage,你很好走。 Java遊戲程序員通常不會**使用Swing:我瞭解Java 3D遊戲,瞭解Java手機遊戲,瞭解Java 2D遊戲......但我不介紹Java Swing遊戲;) – SyntaxT3rr0r 2010-04-07 08:14:00