[英]Want to create a JFrame and JPanel in the same class and have my own paintComponent?
我試圖在同一類中創建一個簡單的JFrame和JPanel,但是我不想擴展JFrame或JPanel Java類。 我還希望能夠包含我自己的paintComponent(),它將覆蓋面板繪畫組件,以便可以繪畫自己的繪畫組件。 我只想創建我的
JPanel p =新的JPanel(); JFrame f =新的JFrame();
一堂課 在某個時候,我將使用它來嘗試找到一種減去和添加bufferedimages的方法,但這是一個不同的問題。
類:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SubtractBufferedImage {
private static final long serialVersionUID = 1L;
Dimension dimension = new Dimension(755,450);
public SubtractBufferedImage() {
JFrame f = new JFrame();
JPanel d = new JPanel();/*User defined class that is above*/
d.setBackground(Color.BLACK);
f.add(new myPanel());
f.setSize(745,440);
f.setSize(dimension);
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setTitle("Subtract Buffered Images");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main(String[] args) {
SubtractBufferedImage t = new SubtractBufferedImage();
}
}
class myPanel extends JPanel {
private BufferedImage bTest1 = null;
private BufferedImage bTest2 = null;
Dimension dimension = new Dimension(755,450);
private String iOne = "src/com/ddh/graphicsBook/CardImage/hold.jpg";
private String iTwo = "src/com/ddh/graphicsBook/CardImage/draw.jpg";
myPanel() {
bTest1 = loadAnyImage(iOne);
bTest2 = loadAnyImage(iTwo);
}
private BufferedImage loadAnyImage(String value){
BufferedImage newImage = null;
try {
newImage = ImageIO.read(new File(value));
} catch (IOException e) {
e.printStackTrace();
}
return newImage;
}
private void drawImageToScreen(Graphics g,BufferedImage i,int x,int y){
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(i,x,y,null);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
drawImageToScreen(g,bTest1,10,10);
drawImageToScreen(g,bTest2,150,10);
}
}
JPanel和JFrame都是Java類,而不是接口,因此您基本上不能在其中實現自己的方法(根據SOLID規則,Open / Closed原則,它們可以擴展但可以修改)。 要實現自己的paintComponent,必須擴展JPanel,這通常是這樣做的。 我不確定為什么不願意擴展這些類,但是如果這樣做,則可以實現其余所有規范:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.