我已经尝试过这方面的教程,但我仍然不太了解它.基本上我的问题是哪种方法更好,为什么?我应该使用paint或paintComponent?
请尽量保持答案简单,谢谢.
我在这里有一些代码,其中有一组"培根"对象.我可以编译并运行它并将对象添加到数组中,但是当我使数组大小超过一百万时,我运行它并且它说'bacon.exe已停止工作'并且我必须关闭它.我认为这可能是内存泄漏,但我仍在了解这一点.我正在使用netbeans ide,我尝试在编译时分配更多内存,但我无法弄清楚如何做到这一点.注意:这不是因为我的整个计算机内存不足,因为在运行程序后我仍然有2GB空闲.这是我的代码:
#include <iostream>
#include "Bacon.h"
using namespace std;
int main() {
const int objs = 1000000;
Bacon *bacs[objs];
for(int i = 0;i < objs;i++){
bacs[i] = new Bacon(2,3);
}
for(int i = 0;i < objs;i++){
bacs[i]->print();
}
cin.ignore();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我的问题有点简单.我想知道的是,你能从java中的RAM中删除对象和实例吗?比如,当你输入:
new Cat();
Run Code Online (Sandbox Code Playgroud)
您没有为该新cat分配变量,因此您无法访问它.这发生在游戏中.它说的是"新猪();",它创造了一个猪的实例.但是当猪死了会发生什么?怎么删除?它可以调用自己的方法来擦除自己吗?
谢谢.
在c ++中创建线程的最简单方法是什么?我想创建一个使用已声明的方法来运行.就像是:
void task1(){
cout << "Thread started";
}
thread t1 = thread(task1());
Run Code Online (Sandbox Code Playgroud)
我想我想创建一个不需要下载任何库的线程,并且我的编译器很可能能够编译.我想回答的一个重要问题是,什么是c ++ 11?它是一个完全不同的语言,还是一堆图书馆?
Java中的repaint()方法存在问题.我创建了一个不断重新绘制屏幕的新线程.当我释放空格键时,我希望我的播放器通过设置其位置然后等待50毫秒并循环20次来顺利下降.相反,它在循环中等待整个时间,然后重新绘制.我想知道为什么它不会不断重现球员坐标的变化.谢谢.
(编辑)感谢大家的帮助.这是我第一次使用堆栈溢出,而我只有13,仍在学习java,所以我可能会再次回到教程.
我的'一级'(主要):
public class a {
public static void main(String[] args) {
JFrame frame = new JFrame("StickFigure Game");
frame.setSize(740, 580);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
b board = new b();
frame.add(board);
frame.addKeyListener(board);
}
}
Run Code Online (Sandbox Code Playgroud)
我的'b'级(JPanel /绘图):
public class b extends JPanel implements KeyListener {
c player = new c();
public class MyRunnable implements Runnable {
public void run() {
while (true)
repaint();
}
}
MyRunnable run = new MyRunnable();
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d = (Graphics2D) …Run Code Online (Sandbox Code Playgroud)