Repaint Won't Call PaintComponent

Oct 25, 2014

Java Code:

package com.cjburkey.games.war.g;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

[code]....

Why is paintComponent not being called by repaint();? Also, paintComponent is called twice when the program starts, that works, repaint is the thing that doesn't work.

View Replies


ADVERTISEMENT

Swing/AWT/SWT :: Call Repaint 200 Times In Loop And It Only Calls PaintComponent Once?

Dec 2, 2014

I have been baffled by the functioning of repaint() - and the SwingPaintDemo3 with the moving square seems mysterious - you call repaint(x,y,w,h) twice and the first time it clears the clip area and the 2nd time it paints the red box. The code in paintComponent tells it to paint the box both times, yet somehow it ignores the initial box and only paints the 2nd one.

I've been writing code to bounce some balls in a box to try and understand the behavior. I set up an array of ball objects, loop through them, move them adjusting for collisions with walls and each other, then repaint(). I call repaint x2 for each ball, just like in the example. In my paintComponenet code, if I try to just paint the current ball only one ball will move, even if I send a different ball object each time. The only way to get all the balls to show up is to put a loop in paintComponenet that goes through all 100 balls every time I call it. I was worried that to move 100 balls I was painting 100x100 times.

So I put some System.out.println commands in my ball move loop, inside my object ball draw commands, and inside the paint component.

private void calculateMoveBall(BoxBalls oneBall) {
System.out.printf("
Entering calculateMoveBall [%1$2d]
",

[Code].....

So even though I called repaint() 200 times (twice for each ball), repaint was actually only called once, drew all the balls at once, and then went back. And I just noticed it appears to have waited until I exited the calculateMoveBall loop to go into paintComponent! The spooky things is how does it know to do that? Does the Java machine 'see' that it is inside of a loop, and perhaps also sees the loop inside of paintComponent, and somehow correctly guesses that it doesn't have to do it 200 times, but can wait and do it once? If I attempt to do the same thing in code, take the loop out of paintComponent() and call repaint() with the current ball, expecting the machine to do exactly what I tell it, it refuses and does it's own thing, waiting to call paintComponent on the 100th ball, drawing only the last ball (so I guess the loop inside paintComponent is not in the logic).

So a call to repaint() is a request for a higher being to decide if it has the time or energy to repaint the clip. If not, it ignores the call, or stacks them up for later (maybe I should try a million and see if it has room for that!) - well so far up to 4000 it behaves the same. This is useful if you are happy with "this is how it works so use it that way". However I really don't like having some kind of hidden logic that I have to trust to work the right way. If I don't want it to wait until later I'm not sure what to do. And I don't trust the machine to do whatever whenever. How do you debug that???

Questions: Is there documentation to know what repaint() will do or how it decides when to call paintComponent? The Swing tutorial gives the example but not the why. "By now you know that the paintComponent method is where all of your painting code should be placed. It is true that this method will be invoked when it is time to paint" "An important point worth noting is that although we have invoked repaint twice in a row in the same event handler, Swing is smart enough to take that information and repaint those sections of the screen all in one single paint operation. In other words, Swing will not repaint the component twice in a row, even if that is what the code appears to be doing." (What the code appears to be doing - now we have to guess what it is doing)

Is there a way to force repaint() to call paintComponent on a clip rectangle (not just on the whole thing?) I would think invalidate() would force repainting of the whole componenet.

Perhaps this is when you draw to a bitmap in memory and paint the whole thing on the screen...

View Replies View Related

Repaint Work In Combination With PaintComponent (Graphics)?

Oct 3, 2014

I am teaching myself AWT/Swing ... It concerns an application that creates dynamic graphics using the Graphics class. I understand that the code that creates graphics should be put in a "paintComponent" method of a (descendant of a) JPanel class. And that when you want to change something on this panel outside "paintComponent", you have to call the "repaint" method, that somehow causes "paintComponent" to be invoked.

However, I don't fully understand the explanation of the example at [URL]... . It concerns an application that moves a red square when a mouse button is clicked. The code can be found at the link, but I also repeat it below.

package painting;
import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;

[Code]...

This code indeed works. However, I don't understand why. The explanation at the Oracle site is the following.

Because we are manually setting the clip, our moveSquare method invokes the repaint method not once, but twice. The first invocation tells Swing to repaint the area of the component where the square previously was (the inherited behavior uses the UI Delegate to fill that area with the current background color.) The second invocation paints the area of the component where the square currently is.

However, what I don't understand: when repaint is first invoked, squareX and squareY still have their old values. If the invocation of repaint simply causes an invocation of paintComponent, then paintComponent should draw a red square at (squareX, squareY). Just like the second invocation of repaint causes paintComponent to draw a red suare at the new values of (squareX, squareY). Instead, the first invocation results in the red square being wiped out by the background color.

So apparently, the first invocation of repaint does not simply cause an invocation of paintComponent. What does it do?

View Replies View Related

Swing/AWT/SWT :: How To Call PaintComponent In JPanel

Nov 7, 2014

How can I make a call to paintComponent within the JPanel-class, from another Class?

In class TestClass:

public class TestClass {
public TestClass() {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setSize(500,500);
initComponents();

[Code] .....

View Replies View Related

How To Tell Another Class To Repaint

Jan 24, 2014

It has to be from another class because the other class controls the fps timer, and I want it to repaint() the panel every tick. However, I cannot seem to find a way to do this because repaint() is not static, and therefor can not be called in any way from another class.

View Replies View Related

Repaint Window From Another Class?

Mar 31, 2014

I am trying to repaint a window from another class. the class Window handles an interface that displays pictures of movies. Via a JMenuBar you can add a new movie and its picture but in order for it to show in the Window i need to repaint certain aspects in the Window class GUI;

The window class constructor:

public Window() {
addComponents();
configurFrame();
addMenu();
}

The functions i want to repaint:

public void repaintWindow() {
this.getContentPane().validate();
this.getContentPane().repaint();
}

From my other class where i add a movie to an ArrayList i have made a "private Window myWindow;" there i call the function repaintWindow via mywindow.repaintWindow(); But this gives me an NullPointerException related to the repaintWindow function.

View Replies View Related

GUI - Swap Bar Arrays And Repaint

Nov 13, 2014

So as of right now, I'm trying to swap my bar arrays and repaint it. For now, I'm using the index 5 and swapping it with index 23. When I click the shuffle button, It swaps, but the highest bar still remains the same.

Here's my code.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class AssortedAssortmentsOfSorts extends JFrame

[Code] ......

View Replies View Related

Swing/AWT/SWT :: Trigger A Repaint From Another Method?

Mar 5, 2014

I have two classes. One constructs my a rectangle using Graphics2D (the class is called Rectangles). The second takes a user input for the triangle, which I am passing back to the first class. I am trying to trigger a repaint of class one from the action listener I have on a button in the second class. how to trigger this event?

View Replies View Related

Swing/AWT/SWT :: Repaint Causes Stack Over Flow

Feb 26, 2014

I have the following code where I call panel repaint method from the action listener of the calc button but it causes stack over flow but when I modify it to call paint component method and removing the super term, the program executes. here is the code

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.BoxLayout;

[Code] .....

View Replies View Related

Swing/AWT/SWT :: Drawing Various Shapes - Repaint Not Working

Jan 16, 2015

I'm trying to make a simple program that will feature some graphics. It will have a JCombobox that the user selects to draw various shapes. I can't get the repaint function to work however.

package selectingshapes;
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JPanel;
import java.awt.Graphics2D;

[Code] .....

View Replies View Related

Swing/AWT/SWT :: JTable - How To Repaint With Updated Data

Jun 5, 2014

Here's what I would like to happen:

Java/Swing dialog box appears on the user's screenIt allows the user to enter 2 values into labelled text fields (fname/sname)They select a "Click Me" push button which I hope will write the data into the table. But the table does not get refreshed.

If I minimise the dialog box and then open it again, the data still does not appear.

The code I originally built using eclipse/WindowBuilder. I've cut it back and tried to isolate the issue. But I still cannot figure it out.

I've added some diagnostic log messages to ensure that I am seeing the various events I think I need to see and have put code in the action callbacks etc.

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;

[Code] .....

View Replies View Related

JavaFX 2.0 :: JFreeChart - When Zoom In Or Out Repaint Works Not Well

May 8, 2015

I have a problem using JFreeChart with JavaFX. I wrote a small program here . At first the graph likes this:

I use fullScreen function to display the JFreeChart Line Chart Demo 2. Here I use SwingNode, ChartPanel to embedded JFreeChart into JavaFX Panel.(Detail part will be included in code later)

Then I press ESC to exit fullScreen. Then it looks like this:

So far, it's as expected. Then I use mouse drag to enlarge the window. Here comes the problem, as the following picture.
 
Can you see that, seems like appear another graph. And I must click on the window, then everything will become good. I wish the graph shows well even when I drag the window to enlarge, is there something I missed? And here is my code:

package testxychart; 
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

[Code] ....

I think, when I use several graphs in one JavaFX Panel, this will becomes a big problem.

View Replies View Related

Swing/AWT/SWT :: Repaint Method Is Automatically Erasing Old Circle?

Feb 19, 2014

This code is shown to eliminate "smearing":

public void paintComponent (Graphics g) {
g.setColor(Color.white);
g.fillRect(0,0,this.getWidth(), this.getHeight());
g.setColor(Color.green);
g.fillOval(x, y, 40, 40);
}

I had done all the previous code (in my own style) and found that the background rectangle was either being redrawn on its own, or there was something else removing the old circles from the screen. I then typed in the code from the previous page exactly as it was, to see if I had some change in syntax that would cause this, and it did the same thing.

Here's my code:

import javax.swing.*;
import java.awt.*;
public class SimpleAnimation {
int x, y;
private static final int HEIGHT = 600;
private static final int WIDTH = 600;

[Code] .....

Is this because I'm using JRE7? I can't find any documentation that indicates the repaint() method has changed since Java 5.

View Replies View Related

Swing/AWT/SWT :: How To Update JPanel Rather Than Refresh It Every Time On Calling Repaint

Jan 4, 2015

I would like to be able to draw things onto the panel (via paintComponent), but I'd like it to draw 'on top' of what's already there. The default seems to be that it resets every time I call repaint.

View Replies View Related

MD5 Function Call

Jan 23, 2014

my first assignment is to convert a md5 string to password of the user, the MD5 function is available, i just need to call it and print the result. Here is my code. I can't call the md5 because of the String[] and String is different in main and md5 function,modify the code so it can run properly, also the input has to be entered from command line.

import java.security.*;
public class PasswordCracker {
public static void main (String[] args){
String password;
md5(args)
System.out.printf(""+password+"");

[code]....

View Replies View Related

How To Call Self Method

May 18, 2014

How to call/define/describe self method.. below is my code :

Java Code:

public static void main(String[] args) {
banana1();
banana2();
banana3();
banana4();
banana5();
banana6();

[code]....

how exactly to call a self method ?

View Replies View Related

Call DTS From Java

Jul 21, 2014

whether we can call DTS directly from Java.Solution which we got as below:-

1. Create dts

2. Create job in which we have to call dts

3. Call job from stored procedure

It pretty lengthy process and we are not sure how error handling can be done in this scenario.

View Replies View Related

Call DTS From Java

Jul 22, 2014

We are using MS SQL server 2000, in which we have explored calling dtsrun.exe from Runtime class in java. But it is not suggested way to call dts, as error handling will be difficult.

whether we can call DTS directly from Java.

View Replies View Related

How To Call Variable From Another Method

Oct 3, 2014

My code has a method where the users input a bunch of variables and then those variables get added together in a new variable. What I want to know is how do I call the variable that is in the other method to another method?

import java.util.*;
public class Calc{
public static void main (String [] args){
determinevalue1();
determinevalue2();
determineTotalvalue(double value1, double value2);

[Code] ....

View Replies View Related

Can Call A Method In If Else Statement?

Dec 6, 2014

I am trying to get the program to ask the user to enter the project grade and if it is less than 65, then I want the program to display "fail" or if it is greater than 64 than I want it to display "passed". In this project I have to include a method and I am trying to call it in my if-else statement. I keep getting an error message saying "Project.java:143: error: incompatible types: void cannot be converted to int". I posted my code below. It's a long program, but this part is toward the bottom.
 
import java.util.Scanner;
public class Project {
public static void main(String[] args) {
  //call method
welcomeMessage();
 
[Code] ....

View Replies View Related

Method Call Not Working?

Oct 30, 2014

I have two comboBoxes - one in main and another in my 'windows' class. The code below is in main and references the comboBox in main but I need to use the comboBoxEnv out of my 'windows' class. How can I do that so it says ComboBoxEnv rather than comboBox?

JMenuItem menuExport = new JMenuItem("Export");
menuExport.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(comboBox.getSelectedItem() == null){

[Code] ....

I've gotten access to it by changing my code and making a method of it but I'm not sure of what I do now

exportImport.comboBoxEnv();

View Replies View Related

How To Call A Class Within The Main

Apr 17, 2014

How do I call a class within the main. For example, this is what i have in my code right now. I am trying to call the class BlackJackGame.

package blackjack;
public class BlackJack {
public BlackJack() {
BlackJackGame();
}
}

View Replies View Related

Call To OS From App Taking 10 Mins On Certain PC

Jul 9, 2014

I have written a java app that's been working for a few years now and the client is very satisfied. However, a certain user has been experiencing a problem where the app runs fine BUT whenever it interacts with the OS (Win7 in this case), it takes ~10 mins to respond. Actions include, for example, exporting the currently displayed JTable to a CSV file or making an OS call to open up MS Word, etc.

I copied the users version of the app onto my platform (win 8.1) and tested it on winXP too with no problems which points towards an issue on the users particular PC. Furthermore, it used to run on the users PC fine until something (??) happened.

I've tried the following so far:-

1. looked at System restore to check anything new installed - nothing obvious
2. disabling anti virus - problem still occurs
3. monitoring JVM process time using Task Manager - little CPU time seems to be utilised (=> no loop etc)

I'll try :-

1. using JvisualVM - although I don't think this will show me what's going on with the OS
2. excluding the JVM and the app from all anti malware

Any app or something that shows interaction with the OS so I can trace what might be intercepting the call from my app to the OS?

View Replies View Related

How To Call Method Without Using Inner Classes

Jun 9, 2014

How do i call the method without using inner classes in this example:

jt = new JTable (model) {
public boolean isCellEditable (int row, int col) {
if (col == 5) {
return false;

[Code] ....

View Replies View Related

To Call Java Method In JSP

Apr 28, 2014

I am trying to call a java method in jsp. The main idea is to hide menu based on the user who logs in. The java class flows like this :

public class UserVerification {
public static void main(String[] args) {
UserVerification obj = new UserVerification();
System.out.print(obj.GetUserVerification("abc"));

[Code] ......

View Replies View Related

Can Call One Constructor From Two Different Constructors?

Nov 19, 2014

I am getting error in second constructor that I have created, it gives an error: cannot find symbol variable

package Objects;

import javax.swing.JOptionPane;
public class Constructor {
public static void main(String[] args) {
Piggybank1 pg1 = new Piggybank1("Abhinav", 500);
pg1.deposit(200);
pg1.withdraw(10);

[Code] ....

View Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved