为什么我的图形不显示?
Why aren't my graphics showing?
我是一名业余 java 编码员,我想制作一款类似于 SpaceInvaders 的游戏。
我想知道为什么当我尝试通过面板添加我的 paintComponent Graphic 时我的框架是空白的,但是当我定期添加我的代码时它会显示所有结果?
这是我的对象 class 添加图形时没有面板并且没有冲突:
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
现在这个版本的我的对象 class 产生一个空白帧
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public objects(){
JPanel jp = new JPanel();
picture p = new picture();
jp.add(p);
}
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
我围绕 paintComponent 创建一个外部 class 的目的是我可以用它创建一个组件以供将来的键绑定。
快把我逼疯了!我搜索了这个网站,但找不到任何东西!如果有人能告诉我原因和解决方案,我将不胜感激:)
顺便说一句,这是我的主要class
package SS;
import javax.swing.JFrame;
public class mainframe {
public static void main(String[] args){
JFrame mainFrame = new JFrame();
mainFrame.setBounds(0, 0, 1920, 720);
mainFrame.setResizable(false);
mainFrame.getContentPane().add(new objects());
mainFrame.setDefaultCloseOperation(mainFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
}
对于我在这篇 post 中所说的一切,我愿意接受批评和适当的措辞。
重复一下我的意思:
我想将我用 paintComponent 方法制作的图形添加到列为 jp 的 jpanel,然后将该 jpanel 添加到我在 mainFrame 中的框架 class
如果我遗漏了什么,也很抱歉,这是我在 Whosebug 中的第一个 post。
在第二个示例中,您将 picture
面板添加到 objects
构造函数中的新 jp
面板,但新面板并未添加到 objects
本身。尝试在 objects
构造函数的末尾添加以下行:this.add(jp);
.
关于如何指定首选尺寸的更新:
public class picture extends JPanel{
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 500);
}
...
}
我是一名业余 java 编码员,我想制作一款类似于 SpaceInvaders 的游戏。
我想知道为什么当我尝试通过面板添加我的 paintComponent Graphic 时我的框架是空白的,但是当我定期添加我的代码时它会显示所有结果?
这是我的对象 class 添加图形时没有面板并且没有冲突:
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
现在这个版本的我的对象 class 产生一个空白帧
package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public objects(){
JPanel jp = new JPanel();
picture p = new picture();
jp.add(p);
}
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
this.setBackground(Color.BLACK);
for (int c=0;c<=1000;c++){
g.setColor(Color.yellow);
rand1=rand.nextInt(1920);
rand2=rand.nextInt(720);
g.drawOval(rand1, rand2, 1, 1);}
g.setColor(Color.MAGENTA);
g.fillRect(1920/2-x,720-100+y, 50, 50);
}
}
}
我围绕 paintComponent 创建一个外部 class 的目的是我可以用它创建一个组件以供将来的键绑定。
快把我逼疯了!我搜索了这个网站,但找不到任何东西!如果有人能告诉我原因和解决方案,我将不胜感激:)
顺便说一句,这是我的主要class
package SS;
import javax.swing.JFrame;
public class mainframe {
public static void main(String[] args){
JFrame mainFrame = new JFrame();
mainFrame.setBounds(0, 0, 1920, 720);
mainFrame.setResizable(false);
mainFrame.getContentPane().add(new objects());
mainFrame.setDefaultCloseOperation(mainFrame.EXIT_ON_CLOSE);
mainFrame.setVisible(true);
}
}
对于我在这篇 post 中所说的一切,我愿意接受批评和适当的措辞。
重复一下我的意思: 我想将我用 paintComponent 方法制作的图形添加到列为 jp 的 jpanel,然后将该 jpanel 添加到我在 mainFrame 中的框架 class
如果我遗漏了什么,也很抱歉,这是我在 Whosebug 中的第一个 post。
在第二个示例中,您将 picture
面板添加到 objects
构造函数中的新 jp
面板,但新面板并未添加到 objects
本身。尝试在 objects
构造函数的末尾添加以下行:this.add(jp);
.
关于如何指定首选尺寸的更新:
public class picture extends JPanel{
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 500);
}
...
}