关于java中画图形的paint方法
publicclassMyTankWar04extendsFrame{publicMyTankWar04(){Framef=newFrame();f.setTitle("...
public class MyTankWar04 extends Frame {
public MyTankWar04(){
Frame f=new Frame();
f.setTitle("我的练习-坦克大战");//命名
f.setBounds(200, 200,800, 500);//设置窗口的位置以及大小
f.setBackground(Color.BLUE);//设置背景颜色
f.setVisible(true);//设置窗口为可见
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);//system退出方法的使用
}//添加窗口监听器,直接使用匿名类实现,简化编程
});
f.setResizable(false);//窗口不能改变
}
@Override
public void paint(Graphics g) {//绘制容器
Color c=g.getColor();//获得颜色
g.setColor(new Color(255,0,0));//设置颜色
g.fillOval(100, 100, 50, 50);//运用Graphics的方法画一个实心圆
g.setColor(c);//恢复原来的颜色
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyTankWar04();//新建一个类实例,自动调用其构造方法
}
}
------------------------------
出现的问题:没意识到本类已继承frame类,自己本身就是一个frame,还在里面写了一个frame,所以最后写paint方法时,图片,显示不出来,是不是自己又写的那个frame把原来的frame给覆盖了,所以看不到了?还有如果是在此基础之上,要往新建的那个frame中画图形怎么写paint方法呢,或者是怎么调用呢?
现在处于java初级阶段啦,希望哪位大神能指导指导,谢谢啦 展开
public MyTankWar04(){
Frame f=new Frame();
f.setTitle("我的练习-坦克大战");//命名
f.setBounds(200, 200,800, 500);//设置窗口的位置以及大小
f.setBackground(Color.BLUE);//设置背景颜色
f.setVisible(true);//设置窗口为可见
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);//system退出方法的使用
}//添加窗口监听器,直接使用匿名类实现,简化编程
});
f.setResizable(false);//窗口不能改变
}
@Override
public void paint(Graphics g) {//绘制容器
Color c=g.getColor();//获得颜色
g.setColor(new Color(255,0,0));//设置颜色
g.fillOval(100, 100, 50, 50);//运用Graphics的方法画一个实心圆
g.setColor(c);//恢复原来的颜色
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyTankWar04();//新建一个类实例,自动调用其构造方法
}
}
------------------------------
出现的问题:没意识到本类已继承frame类,自己本身就是一个frame,还在里面写了一个frame,所以最后写paint方法时,图片,显示不出来,是不是自己又写的那个frame把原来的frame给覆盖了,所以看不到了?还有如果是在此基础之上,要往新建的那个frame中画图形怎么写paint方法呢,或者是怎么调用呢?
现在处于java初级阶段啦,希望哪位大神能指导指导,谢谢啦 展开
3个回答
展开全部
你可以这样 frame里面添加一个容器panel 然后把图片添加到panel里面
给你一个例子参考。代码如下:
package interfacepack;
import java.awt.*;
import javax.swing.*;
class Frame1 extends JFrame {
public Frame1() {
setBounds(0,0,1152,512);
JPanel panel = new JPanel() {
public void paint(Graphics g) {
ImageIcon icon = new ImageIcon("G://java//图片镶嵌//a.jpg");
Image img = icon.getImage();
g.drawImage(img, 0, 0,
icon.getIconWidth(), icon.getIconHeight(), icon.getImageObserver());
}
};
add(panel);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLayout(null);
}
public static void main(String[] args) {
Frame1 Window1 = new Frame1();
}
}
给你一个例子参考。代码如下:
package interfacepack;
import java.awt.*;
import javax.swing.*;
class Frame1 extends JFrame {
public Frame1() {
setBounds(0,0,1152,512);
JPanel panel = new JPanel() {
public void paint(Graphics g) {
ImageIcon icon = new ImageIcon("G://java//图片镶嵌//a.jpg");
Image img = icon.getImage();
g.drawImage(img, 0, 0,
icon.getIconWidth(), icon.getIconHeight(), icon.getImageObserver());
}
};
add(panel);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLayout(null);
}
public static void main(String[] args) {
Frame1 Window1 = new Frame1();
}
}
更多追问追答
追问
谢谢啦,可是好像不行额,还有JFrame和Frame是一样的么?
追答
其实都差不多,但是JFrame好用些,不过java GUI这个以后很少用到,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是看马士兵的视频吧?没必要再new 一个frame把所有的f换成this就成了
追问
不是的呢,这个我知道不用新建呢,可能没看清楚我问的问题吧嘿嘿,对了,马士兵讲的好么?网上可以收到?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询