看了马士兵老师的坦克大战java程序,想按照自己的思路动手编一下,结果界面背景设置不了,
图也画不出来,大神们帮忙看看哈,顺便问一句,java作图非要继承Frame或JFrame嘛?第一个!importjava.awt.Color;importjava.awt...
图也画不出来,大神们帮忙看看哈,顺便问一句,java作图非要继承Frame或JFrame嘛?
第一个!
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Kosese001 extends JFrame
{
private JFrame jfrmMain;
int x = 30, y = 50;
private Kosese001()
{
mainFrame();
}
private void mainFrame()
{
jfrmMain = new JFrame("坦克大战");
jfrmMain.setLocation(100, 100);
jfrmMain.setSize(800, 600);
jfrmMain.setVisible(true);
jfrmMain.setBackground(Color.green);
jfrmMain.setResizable(false);
}
public static void main(String[] args)
{
Kosese001 kosese = new Kosese001();
}
public void paint(Graphics g)
{
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 35, 35);
g.setColor(c);
x += 5;
}
}
第二个!
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Kosese001 extends JFrame
{
int x = 30, y = 50;
private JFrame jfrmMain;
private MyPaint mypaint;
private Kosese001()
{
mainFrame();
}
private void mainFrame()
{
jfrmMain = new JFrame("坦克大战");
jfrmMain.setLocation(100, 100);
jfrmMain.setSize(800, 600);
jfrmMain.setVisible(true);
jfrmMain.getContentPane().setBackground(Color.green);
jfrmMain.setResizable(false);
mypaint = new MyPaint();
jfrmMain.getContentPane().add(mypaint);
}
private class MyPaint extends JPanel
{
public void paintComponents(Graphics g)
{
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 35, 35);
g.setColor(c);
x += 5;
}
}
*/
public static void main(String[] args)
{
Kosese001 kosese = new Kosese001();
}
} 展开
第一个!
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Kosese001 extends JFrame
{
private JFrame jfrmMain;
int x = 30, y = 50;
private Kosese001()
{
mainFrame();
}
private void mainFrame()
{
jfrmMain = new JFrame("坦克大战");
jfrmMain.setLocation(100, 100);
jfrmMain.setSize(800, 600);
jfrmMain.setVisible(true);
jfrmMain.setBackground(Color.green);
jfrmMain.setResizable(false);
}
public static void main(String[] args)
{
Kosese001 kosese = new Kosese001();
}
public void paint(Graphics g)
{
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 35, 35);
g.setColor(c);
x += 5;
}
}
第二个!
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Kosese001 extends JFrame
{
int x = 30, y = 50;
private JFrame jfrmMain;
private MyPaint mypaint;
private Kosese001()
{
mainFrame();
}
private void mainFrame()
{
jfrmMain = new JFrame("坦克大战");
jfrmMain.setLocation(100, 100);
jfrmMain.setSize(800, 600);
jfrmMain.setVisible(true);
jfrmMain.getContentPane().setBackground(Color.green);
jfrmMain.setResizable(false);
mypaint = new MyPaint();
jfrmMain.getContentPane().add(mypaint);
}
private class MyPaint extends JPanel
{
public void paintComponents(Graphics g)
{
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 35, 35);
g.setColor(c);
x += 5;
}
}
*/
public static void main(String[] args)
{
Kosese001 kosese = new Kosese001();
}
} 展开
展开全部
java 作图 不一定要继承JFrame或者Frame,但是所有的组件必须放到顶层容器,Java Swing 有三种顶层容器
JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。
·JDialog:和JFrame类似,只不过JDialog是用来设计对话框。
·JApplet:用来设计可以在嵌入在网页中的Java小程序。
而且你的代码 Kosese001既然继承了JFrame 那么他的构造就是个JFrame ,你下面又new JFrame("坦克大战");这样何必继承,直接在构造里面实现操作就可以把Kosese001中,
你的背景色没有显示出来,是由于JFrame 是顶层容器,它默认的布局会设置它的背景色,除非你在前面 加上 jfrmMain.setLayout(null);使得布局变成空布局,下面的jfrmMain.getContentPane().setBackground(Color.green); 才会生效,或者你可以通过设置JFrame上组件的背景色来完成同样的效果 比如 mypaint = new MyPaint();
mypaint.setBackground(Color.green); 还有啥不懂的 可以问我。
JFrame:用来设计类似于Windows系统中的窗口形式的应用程序。
·JDialog:和JFrame类似,只不过JDialog是用来设计对话框。
·JApplet:用来设计可以在嵌入在网页中的Java小程序。
而且你的代码 Kosese001既然继承了JFrame 那么他的构造就是个JFrame ,你下面又new JFrame("坦克大战");这样何必继承,直接在构造里面实现操作就可以把Kosese001中,
你的背景色没有显示出来,是由于JFrame 是顶层容器,它默认的布局会设置它的背景色,除非你在前面 加上 jfrmMain.setLayout(null);使得布局变成空布局,下面的jfrmMain.getContentPane().setBackground(Color.green); 才会生效,或者你可以通过设置JFrame上组件的背景色来完成同样的效果 比如 mypaint = new MyPaint();
mypaint.setBackground(Color.green); 还有啥不懂的 可以问我。
更多追问追答
追问
你的意思是继承之后直接由this.?能把你的QQ给我吗,QQ上说方便点!
追答
我帮你把代码简化一下给你吧。
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Kosese001 extends JFrame{
int x = 30, y = 50;
private Kosese001() {
super("坦克大战");
JPanel mypaint = new MyPaint();
mypaint.setBackground(Color.green);
add(mypaint);
setLocation(100, 100);
setSize(800, 600);
setVisible(true);
setResizable(false);
//这句关闭资源的加上 不然你的JVM内存会被消耗完
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class MyPaint extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Color c = g.getColor();
g.setColor(Color.RED);
g.fillOval(x, y, 35, 35);
x += 5;
}
}
public static void main(String[] args) {
Kosese001 kosese = new Kosese001();
}
}
你的图没画出来 是你重写方法写错了paintComponents多了个 s。。。。。。
扣扣 1254158885 添加的时候 说明来意。。。。不然或许会被拒绝。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询