I'm trying to get a basic Java applet displaying a simple image up and running but for some reason (I suspect a path issue or a IntelliJ setting I'm not familiar with) it's not showing up.
Here's my code:
import java.applet.Applet;
import java.awt.*;
public class Main extends Applet{
private Image logo;
#Override
public void init() {
logo = getImage(getDocumentBase(), "image.jpg");
}
#Override
public void paint(Graphics g) {
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
g.drawImage(logo, 10, 10, this);
}
}
The image is located in the same directory as the code itself.
Any idea what's going on here?
Thanks
Try putting that image in a folder 'Resources' in your project.
Also right click that folder -> Mark as Resources. I did this many times and it worked
Related
I'm new to OpenGL in Java, and Java in general. I am following a textbook and trying to create my first window. However, when I run my code, I get the error that "package com.jogamp.opengl does not exist". I have added the .JAR files to my project's reference libraries as shown.
My code reads:
import javax.swing.*;
import static com.jogamp.opengl.GL4.*;
import com.jogamp.opengl.*;
import com.jogamp.opengl.awt.GLCanvas;
public class Code extends JFrame implements GLEventListener {
private GLCanvas myCanvas;
public Code() {
setTitle("Chapter 2 - program 1");
setSize(600, 400);
setLocation(200, 200);
myCanvas = new GLCanvas();
myCanvas.addGLEventListener(this);
this.add(myCanvas);
this.setVisible(true);
}
public void display(GLAutoDrawable drawable) {
GL4 gl = (GL4) GLContext.getCurrentGL();
gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
gl.glClear(GL_COLOR_BUFFER_BIT);
}
public static void main(String[] args) {
new Code();
}
public void init(GLAutoDrawable drawable) {
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
}
public void dispose(GLAutoDrawable drawable) {
}
}
Any advice would be great - I'm guessing it is some simple step I've missed, but I've gone over the section in the book a couple of times now so I'm nto sure what I'm missing.
You have to add jogamp-fat.jar into the classpath. Please rather ask your JOGL specific questions on the official JogAmp forum as only a very few JOGL maintainers and users come on StackOverflow. Please ensure that you use at least JOGL 2.3.2. The namespace used in the JAR(s) must match with the namespace used in your source code above. Moreover, you must include the necessary JAR(s) not only when you compile but when you run your project too.
I don't know how VisualStudio Code works, these are the instructions for other major Java IDEs: https://jogamp.org/wiki/index.php?title=Setting_up_a_JogAmp_project_in_your_favorite_IDE
I've made a simple program where you should be able to hold and drag the mouse to paint something. Now, this program works fine on my Windows, but when I try the exact same code on my Mac, the 10x10 dot I'm trying to draw with just follows the cursor, but doesn't leave a track behind it.
First, I thought it was a problem with the JDK, so I've reinstalled and installed different versions. Same with both Eclipse And Netbeans, reinstalled multiple times, but it did not work.
public class panelDraw extends JPanel {
int x, y;
/**
* Create the panel.
*/
public panelDraw() {
addMouseMotionListener(new MouseMotionAdapter() {
#Override
public void mouseDragged(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
});
}
public void paintComponent(Graphics g) {
g.fillRect(x, y, 10, 10);
}
Here is the panel that I then put in a JFrame to run the program. As I said, no problem on my Windows, but on the Mac, it doesn't "draw" anything the dot just follows the cursor.
Thank you for the help!
I have an issue using LibGDX with assets directory. I actually build my project folder this way. I follow this tutorial to learn. (I work on Eclipse)
The code I use is :
package com.mygdx.game;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureAtlas.AtlasRegion;
import com.badlogic.gdx.utils.Timer;
import com.badlogic.gdx.utils.Timer.Task;
public class MyGdxGame implements ApplicationListener {
private SpriteBatch batch;
private TextureAtlas textureAtlas;
private Sprite sprite;
private int currentFrame = 1;
private String currentAtlasKey = new String("0001");
#Override
public void create() {
batch = new SpriteBatch();
// THE PROBLEM IS UNDER THIS LINE
textureAtlas = new TextureAtlas(Gdx.files.internal("spritesheet.atlas"));
AtlasRegion region = textureAtlas.findRegion("0001");
sprite = new Sprite(region);
sprite.setPosition(120, 100);
sprite.scale(2.5f);
Timer.schedule(new Task(){
#Override
public void run() {
currentFrame++;
if(currentFrame > 20)
currentFrame = 1;
// ATTENTION! String.format() doesnt work under GWT for god knows why...
currentAtlasKey = String.format("%04d", currentFrame);
sprite.setRegion(textureAtlas.findRegion(currentAtlasKey));
}
}
,0,1/30.0f);
}
#Override
public void dispose() {
batch.dispose();
textureAtlas.dispose();
}
#Override
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
sprite.draw(batch);
batch.end();
}
#Override
public void resize(int width, int height) {
}
#Override
public void pause() {
}
#Override
public void resume() {
}
(if the code is hard to read I use exactly the same code that is in the tutorial linked below)
My package explorer looks like this :
imgur link
And it returns me :
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: File not found: spritesheet.atlas (Internal)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.(TextureAtlas.java:103)
at com.badlogic.gdx.graphics.g2d.TextureAtlas.(TextureAtlas.java:231)
at com.badlogic.gdx.graphics.g2d.TextureAtlas.(TextureAtlas.java:226)
at com.badlogic.gdx.graphics.g2d.TextureAtlas.(TextureAtlas.java:216)
at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:23)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
I tried some trick like Project>Clean, refreshing, close and re-open Eclipse and even recreated a project. Any idea ?
Okay, I found the trick. For those which encounter the same issue (working on Eclipse but it's pretty the same whatever the IDE is) there is one thread on stack overflow already existing which give additional solutions.
For me I had to set-up the "working directory" (for the desktop main for exemple). To do this go on Run>Run configuration>Arguments and at working directory's section there is Default and Other. Tick Other's box and me I had to write ${workspace_loc:my-gdx-game-core/assets} but I think it works like ${workspace_loc:[name-of-your-core-directory]/assets}. Hope it helped.
maybe you haven't linked the asset folder, if so,
try right click on my-gdx-game-desktop, in properties dialog select Java Build Path, click link source button, then navigate to the assets folder.
if you're already set it, try readd with this step, restart eclipse if needed
SOLVED, sorry!
I'm following this tutorial here: http://www.gamefromscratch.com/post/2013/10/02/LibGDX-Tutorial-3-Basic-graphics.aspx
For some reason, when running the code provided in that URL, an error comes back telling me that the image cannot be found, which is easily understandable. However, I cannot figure out why this error is coming at me.
Here is the error I am getting, just in case:
> Exception in thread "LWJGL Application"
> com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file:
> /data/jet.png at
> com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140) at
> com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
> at com.badlogic.gdx.graphics.Texture.load(Texture.java:142) at
> com.badlogic.gdx.graphics.Texture.<init>(Texture.java:133) at
> com.badlogic.gdx.graphics.Texture.<init>(Texture.java:112) at
> com.badlogic.gdx.graphics.Texture.<init>(Texture.java:104) at
> com.me.mygdxgame.MyGdxGame.create(MyGdxGame.java:18) at
> com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:137)
> at
> com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:115)
> Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found:
> \data\jet.png (Internal) at
> com.badlogic.gdx.files.FileHandle.read(FileHandle.java:134) at
> com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:218) at
> com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137) ... 8 more
Here is the code:
package com.me.mygdxgame;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class MyGdxGame implements ApplicationListener {
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
#Override
public void create() {
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("data/jet.png"));
sprite = new Sprite(texture);
}
#Override
public void dispose() {
batch.dispose();
texture.dispose();
}
#Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.begin();
sprite.draw(batch);
batch.end();
}
#Override
public void resize(int width, int height) {
}
#Override
public void pause() {
}
#Override
public void resume() {
}
}
Here is my directory to the image:
C:\Android\projects\my-gdx-game-android\assets\data
Here is the directory in Eclipse:
So it looks like the image is not included in the project... How do I import it?
Refresh your project, right click over the project > Refresh or F5, so you can load the "jet.png" resource.
If you load the image directly on your Eclipse´s project explorer you will have no problems, but if you load only in Windows Explorer you have to refresh your project.
Solved using Import... -> File System -> Find my images and add them to the project.
First you can write this code
texture = new Texture(Gdx.files.internal("data/jet.png"));
like this (both right)
texture = new Texture("jet.png");
Second Make sure your file name dosn't have space before first letter (in asset folder)
cause reading " jet.png" is different from "jet.png"
Third Clean & refresh your project
Clean
1- Project ---> Clean
Refresh Gradle 2- Right Click ---> Cradle ---> Refresh All
Make sure you import files by drag and copy don't link it
your game desktop project ----> assets Drag your files & make sure you choose Copy
I'm developing my first android game with libgdx, using as a base this amazing tutorial (http://www.kilobolt.com/day-11-supporting-iosandroid--splashscreen-menus-and-tweening.html). Everything works properly except for the tweening that I’m using in the splash screen to show the logo of my “company”. The weird part is that the logo works just fine in the desktop version, but in the android version is not being showed.
I’m using the same class that they used in the app developed in the tutorial. By the way, this app’s splash screen works fine in both versions.
I have compared my app and the tutorial’s app, but I found no differences except for this on the package explorer. I don't know if it means something:
http://i1223.photobucket.com/albums/dd507/victormmenendez/tut.jpg
package com.victor.Screens;
import aurelienribon.tweenengine.BaseTween;
import aurelienribon.tweenengine.Tween;
import aurelienribon.tweenengine.TweenCallback;
import aurelienribon.tweenengine.TweenEquations;
import aurelienribon.tweenengine.TweenManager;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.victor.TweenAccessors.SpriteAccessor;
import com.victor.FZHelpers.AssetLoader;
import com.victor.FZombies.FZGame;
public class SplashScreen implements Screen
{
private TweenManager manager;
private SpriteBatch batcher;
private Sprite sprite;
private FZGame game;
public SplashScreen(FZGame game)
{
this.game = game;
}
#Override
public void show()
{
sprite = new Sprite(AssetLoader.logo);
sprite.setColor(1, 1, 1, 0);
float width = Gdx.graphics.getWidth();
float height = Gdx.graphics.getHeight();
float desiredWidth = width * .4f;
float scale = desiredWidth / sprite.getWidth();
sprite.setSize(sprite.getWidth() * scale, sprite.getHeight() * scale);
sprite.setPosition((width / 2) - (sprite.getWidth() / 2), (height / 2) - (sprite.getHeight() / 2));
setupTween();
batcher = new SpriteBatch();
}
private void setupTween()
{
Tween.registerAccessor(Sprite.class, new SpriteAccessor());
manager = new TweenManager();
TweenCallback cb = new TweenCallback()
{
#Override
public void onEvent(int type, BaseTween<?> source)
{
game.setScreen(new GameScreen());
}
};
Tween.to(sprite, SpriteAccessor.ALPHA, .8f).target(1).ease(TweenEquations.easeInOutQuad).repeatYoyo(1, .4f).setCallback(cb).setCallbackTriggers(TweenCallback.COMPLETE).start(manager);
}
#Override
public void render(float delta)
{
manager.update(delta);
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batcher.begin();
sprite.draw(batcher);
batcher.end();
}
}
Thank you very much for your help. I'm sorry if in any moment I couldn’t explain myself, but English is not my primary language. If you need any extra piece of code, I can add it.
You need to make sure you export the tween jar files in your Build Path. For Eclipse, you can Right-click on the project, choose "Build Path" > "Configure Build Path", go to the "Order and Export" tab on the right side, and make sure that the tween jar files are checked in the list there.