Swing/AWT/SWT :: What Does Graphics Object Actually Represents
Aug 13, 2014
I'm not even sure if that is the right question to ask. I've been confused by what is A Graphics object for a while now, I used to think that it is simply a tool to use to change colors and draw to specific container(ie JFrame, JPanel). However, I've been studying buffering(triple, double, flipping...etc) and how it works for 3 days now, and my confusion has only increased. for instance, why when we need to draw to the buffer(ie BufferStrategy, BufferedImage) we get its own graphics object to draw to it and then we project it to the screen?
Does the Graphics Object represent the drawing surface (ie the JPanel it self if we're using one to draw custom painting via JPanel#paintComponent(Graphics g)) ? and so when we're getting the graphics object of a buffer, do we actually get its drawing surface to paint on?
So generally speaking if we are using a JPanel and we say bufferedImage#createGraphics and use that graphics object to draw to, we would not be drawing to the JPanel but to the BufferedImage correct?
I used to think that it is simplly a tool to use to change colors and draw to specific container(ie JFrame, JPanel). However, I've been studying buffering (triple, double, flipping...etc) and how it works for 3 days now, and my confusion has only increased. for instance, why when we need to draw to the buffer(ie BufferStrategy, BufferedImage) we get its own graphics object to draw to it and then we project it to the screen? does the Graphics Object represent the drawing surface (ie the JPanel it self if we're using one to draw custom painting via JPanel#paintComponent(Graphics g)) ? so generally speaking if we are using a JPanel and we say bufferedImage#createGraphics and use that graphics object to draw to, we would not be drawing to the JPanel but to the BufferedImage correct?
what is A Graphics object for a while now, I used to think that it is simply a tool to use to change colors and draw to specific container(ie JFrame, JPanel). However, I've been studying buffering(triple, double, flipping...etc) and how it works for 3 days now, and my confusion has only increased. for instance, why when we need to draw to the buffer(ie BufferStrategy, BufferedImage) we get its own graphics object to draw to it and then we project it to the screen? does the Graphics Object represent the drawing surface (ie the JPanel it self if we're using one to draw custom painting via JPanel# paint Component(Graphics g) and so when we're getting the graphics object of a buffer, do we actually get its drawing surface to paint on? so generally speaking if we if we are using a JPanel and we say BufferedImage#createGraphics and use that graphics object to draw to, we would not be drawing to the JPanel but to the BufferedImage correct?
Basically I am making a paddleball game, like i'm sure everyone does in learning Java. I'm supposed to use different classes for each component, i.e. one for the ball, one for the paddle, and one for the display, then finally one as a 'controller' to implement mouselistener and stuff.
However, I can't quite grasp how to implement the paintComponent method. I know I can only have it in one class extended from JPanel, and I have the syntax for creating an object which I understand is something like this:
public void paintComponent(Graphics g){ //this is the rectangle my game will be played on, super.paintComponent(g); //a gray background to define boundaries for the ball g.setColor(Color.GRAY); g.drawRect(0, 0, Frame.getHeight(), Frame.getWidth());
However what I don't understand is, how do I then pass this graphics object to the ball and paddle to let them draw themselves? I found something that described it like this here
What I don't get is, if I use this, where would I put the drawRect and stuff to make the other shapes I need? in their class, under the entity.Draw(g) method? or in the display class where it calls the graphic object in the first place?
Last, how can I have my controller class refresh the displays of each of these with the timer I have implemented? Is there a simple way to call one refresh command and have it refresh the drawing of both the paddle and ball simultaneously, or would I need to call a separate refresh command for each object?
I use Canvas, Graphics & JFrame, but not JPanel, how do I add an Image? To see my code: [Java] package pack.script.game; import java.awt. BorderLayout; import java.awt.Canv - Pastebin.com
What do I need to add, or where can I find information on how to add an image? Can I add an image using Graphics? I will import any utils, swings or awts needed. But I don't want to change my code too much.
I am trying to create this snake and input it into the next window that is opened when the play button is pushed but how to draw this snake or get him into the frame and i have looked all over google.
import javax.swing.*; import javax.swing.Box.Filler; import java.awt.*; import java.awt.event.*; public class SnakeObject extends JFrame { public SnakeObject()
I see this is an object reference, but what is on the right side? Does not seem like a method, as it would not equal a method nor would the parentheses be on the left. Why are parentheses there? Disregarding the above code, I would like to know how to rotate without Graphics 2d
Also, with G2D you it will not allow for setting x coords
So I'm doing a project for my CS class where we have to create a snowman doing something. My picture is of Vince Young in the 2005 Rose Bowl. I'm trying to make the actual video clip from Youtube (do I need to download it? If so I can do that) appear on the scoreboard. As of right now, this is my background file:
import java.awt.*; import java.awt.event.*; import java.awt.Font.*; class snowBackground { public static void drawField(Graphics g, Color field) { Color sky = new Color(95,166,243);
[Code]...
and this is the Driver file (not sure if this is necessary):
import java.awt.*; import java.awt.event.*; import java.awt.Font.*; public class SnowDriverWSB { public static void main(String args[]) { GfxApp gfx = new GfxApp(); gfx.setSize(1000,650);
[Code]...
There are 3 other files that make the actual Snowmen. To do this, I need VERY basic steps, as I'm extremely confused and new to Java. Also, would I need to download the mp3 sound file seperately and play that, or will inserting the video do both?
I want to do a simple background which is only rendered once onto my screen. I want to use
G.fillRect(0, 0, getWidth(), getHeight());
and make the whole background black, but only once. I wanted to try out making the fillRect into a variable so I can do:
if (background == null) { //background is the variables name. G.fillRect(0, 0, getWidth(), getHeight()); }
The point is, I want G.fillRect(0, 0, getWidth(), getHeight()); to be a variable, even if this is the wrong way to approach what I want to accomplish, is it possible to make this line of code into one variable? The rest of my code if you need info:
I'm having some problems with the graphics of my hangman game. The graphic that's supposed to show up on the first guess (the hangman pole) doesn't show up until guess number 2. And on the eighth guess, no graphics show up (I just get a blank frame).
import java.awt.*; import javax.swing.*; public class HangmanFigure extends JPanel { private int guesses; private Image background; public HangmanFigure() { super();
I have this 2 dimensional array that represents color pixels
RGBColor[][] rgbArray1 = new RGBColor[rows][columns] - so each elemnt in this array is a pixel - (red, green, blue)
I wrote a class named RGBImage. represents an image. the constructor of this class takes RGBColor[][] rgbArray1 as an argument and print the image.
My problem is when i try to rotate the image 90 degrees. because the dimentions are changeing. i'm getting ArrayIndexOutOfBounce Exception.
I know i can to this by create a bigger 2 dimensional array and copy the original , but for this assignment i cant do this .
I must use the original one . now i will show the main method that will get things clearer if i didnt explained well enough.
System.out.println("Constructor with RGBColor[][] Array Parameter:"); RGBColor[][] rgbArray1 = new RGBColor[3][4]; for (int i=0; i<rgbArray1.length;i++) for (int j=0; j<rgbArray1[0].length;j++) rgbArray1[i][j] = new RGBColor(i,i,i);
What I want to do is have a label that is updated whenever an object gets some new, relevant data.The way you do it in Java looks different from the way we do it in Objective-C. In Objective-C, we have what's known as a protocol. An Objective-C protocol is almost exactly like a Java "implementation." In Obj-C, if I want the user to see the address of where he is, I can have an object that gets the information and invokes a view controller's method; at that point, the view controller would then take the data passed to it and display the data in a label. However, the view controller is an instance of a subclass of the bundled view controller class.
I am trying to find either some references to point me on the right track with passing an object with all of it's properties still in tact after it's been created. Currently I am trying to do this through an interface but it seems to just create a new object everytime without the properties. Example below :
import java.util.ArrayList; import java.util.List; public interface TPerson{ //public Person p = null; } class Thrower { Person p;
[code]....
When I implement the interface on the other objects as soon as I call the setP method shown above it seems to just create a new one even though I pass the object to the method I want to use.
java.awt.Component is an abstract class, and it's direct Sub-classes are Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, Text Component
So, when I use addXListener(mylistenerclass m);//which is a method of Component class which object is holding the list of all listeners, for a particular Event Source?
I am under the assumption that - there is an Event Source Object(possibly static) for every Event Source type(mouse, keyboard etc) that holds a list of destinations(classes that implements their listener interface) - added to the the object via addXListener method. When an event happens(mouse click, drag etc) the Event Source Object creates an Event Object and send it to all the destinations. Is my assumption correct? I can't seem to find the location or declaration of Event Source Object and the list where it stores it's registered destinations.
I have two JFrames the first one is a log in screen where i log in to the log in server that i made using RMI . If the log in succeeds i send the user object witch is Serializable to the second JFrame.
The user object is received from the server. This object contains all the information needed in the second JFrame. This second JFrame is made inside the first one and i defined a method with witch i send this user object to the second frame.
Now the problem arises , while inside this method i am able to read all the data i need from the user object. At the end of the method i save the reference of this object in a new User object defined in the second JFrame ,because i need it later on.
But soon as this method finishes , for some reason my reference to the object becomes null , and i cant use it later on.
I' currently wrking on BeatBox application from Head First Java. I made a jpanel the pane of the frame & when i try to add a JMenuBar object to that it is not getting displayed when i run the code. When i add a menuBar directly to the JFrame object it is visible & working fine but not incase when added to JPanel.
I’m teaching myself Java. I am a fairly proficient programmer in other languages, but this is the first OO language I’m doing.I have a question that is a bit hard to summarize. Or it should be: how can I pass on an object (or variable) to an event listener?
I am writing an application in which you can play a Sudoku game. I have separated the “logic” or the “model”(the classes with Sudoku data structures and methods to manipulate them) from the presentation (the view and the controller).The main method starts off as follows:
SudokuModel model = new SudokuModel(); SudokuView viewController = new SudokuViewController(model);
The first line creates class for the logic and the second line creates the class for the view and the controller. Since the view and the controller need access to the business logic, the model is passed on to the ViewController class.The SudokuViewController class creates the user interface in Swing and it handles the user input. For the user input I have created a number of listeners, like this:
table.addKeyListener(this);
Now these listeners need access to the model since they update it. However, as far as I’m aware the only parameter passed on to an event listener is the event itself. So these event listeners do not have direct access to the model, even though it is passed on to the constructor of the class SudokuViewController.
To circumvent this, I made model2 an attribute (variable) of the class SudokuViewController. The constructor of the class sets this variable as follows:
model2 = model;
Now the event listeners have access to model2, which they can manipulate.This works. However, I think it is an ugly solution, introducing an additional object (model2). I’d like to pass on the object named model to the event listener, but this doesn’t seem to be possible.
I have a number of cells which are Dates and need to have them appear in the same format. The samples I have seen usually create a new cell renderer object for each cell, even if its the same type. Since I have a number of Date cells I thought it best to use a single object for each of the date cells, but after seeing the different samples I am wondering if there is something I may be missing where using the same cell renderer object could potentially be an issue.
I'm trying to create a table where the Header is a custom object.
The custom object would be something along the lines of
public MyColumnObject { String myLabel; ArrayList dataForDropdowns; int defaultColumnIndex; int modifiedColumnIndex; String tooltip; }
This is simpler then what I want to do, but it's the basic concept. I want the column header to render the myLabel for the visual (at least at first). I want this render to be applied to however many columns I have, which will differ from table to table, but I always want the column header of each column to be of type myColumnObject.
I thought somethinglike this would work, but I'm getting java.lang.ClassCastException: java.lang.String cannot be cast to myColumnObject which makes sense, but I thought that I would be getting back my object.
p.s. I re-labeled all my code from my actual project, so if something looks off, it was probably just the re labeling.
public NewTestTable(MyColumnObjects[] fields) { setModel(new TestObjectTableModel( new Object [][] { }, fields ) { private static final long serialVersionUID = 1L; public boolean isCellEditable(int rowIndex, int columnIndex) {
He said that if you need something that Swing can't provide, like a bar graph, you build it. Now, being used to just writing a method that will open up a JFrame, how you would actually build graphics on your own. How in the world would that work? How would one write their own methods to make a window or to build a graph?
I attempted to make my square move in the screen and i set up collision with another object, however the graphics are flickering, really flickering, here's the code:
Java Code:
import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; public class NewEmpty extends JFrame { double p1speed =5, p2speed =5;
I am attempting to create a n-body simulation using orbital dynamics and Java in school.
I am only in high-school, but I have some programming experience. The logic of this program comes quite easily. My problem is the graphical part, so I was just looking for quick methods to implement graphics.
What I am looking to do, is display objects onto the screen and manipulate their respective x and y coordinates as time pass. I have tried to use BufferedImages and an array of every pixel on the screen, but it quickly becomes extremely hard to draw circles etc. I have also tried the Graphics class and using g.fillOval() etc, but this can also get tedious.
Are there any more efficient methods, libraries etc? And also, how should I use the time variable, a variable that updates everytime the program updates?
I wanted to create a interface with buttons ofshapes and type of transformation where user first select a shape, the shape will appear and user will have to click on the buttons on resize, reflect, rotate or skew to transform to shape. How can i do the coding? such as adding listeners to the shapes?
What I am trying to do is save the the content drawn to my screen as an image. The following code is my render method and although I know how to use it, I don't fully understand the classes and how they work with is making this difficult.
public void render() { BufferStrategy bs = this.getBufferStrategy(); if (bs == null) { createBufferStrategy(3); return;