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
ADVERTISEMENT
Aug 18, 2014
I like to adding a scrollbar to a jpanel with flowlayout but is imposible, i don't see the scrollbar. I've tried a thousand different ways but I have not accomplished anything.
Here is my code:
//Creamos el panel que contendra los botones de cada producto diferente
package com.foolsrecords.tpv.tablaproductos.vista;
//Hacemos todas las importaciones necesarias
import com.foolsrecords.tpv.modelo.Producto;
import com.foolsrecords.tpv.modelo.eventos.ControladorEventListener;
[Code] ......
View Replies
View Related
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
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
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
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
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
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
Sep 2, 2014
So I'm working on some networking code and I have the Server running as its own thread, then I have a PacketListener which is contained in the Server, that is running on its own thread too. As of right now, the PacketListener waits for packets via DatagramSocket.receive() and then adds them to a queue. The Server runs in a loop and it checks that queue for packets and then polls the most recent and process it before sleeping for 1 millisecond. Here is my question though, I'm considering changing the program to a more observer pattern structure in that when the PacketListener would receive a packet, rather than add it to the queue, it'd notify the server which would process it. However, wouldn't this cause additional time required within the PacketListener thread dedicated to processing the packets rather than listening for them?
View Replies
View Related
Apr 23, 2014
Java code to build control flow graph of any user program in jframe...
View Replies
View Related
Aug 8, 2014
URL....In the mentioned project in this blog I used Spring Web Flow to satisfy some requirements but now that development of the Spring Web Flow stopped I like to check what Faces Flows can present to satisfy the same requirements.From a quick look similarities between Spring Web Flow and Faces Flows are obvious but there is one specific point I like to ask.In SWF it is possible to define flowing element at the beginning of an flow.
<on-start>
<evaluate expression="CustomerSearchSM.resetStateMachine()"/>
</on-start>
which will trigger an event when you will start executing a flow, I look to the Faces Flows flow descriptors but I can see an element that fullify similar requirement.similar functionality built into the Faces Flow or not?And is there a way to configure Faces Flows that it reacts to events from the users like the following.
<transition on="onStartCustomerSearch" history="invalidate">
<evaluate expression="customerSearchInputBB.searchCustomer()"/>
</transition>
<transition on="onCustomerAuthenticated" history="invalidate">
<evaluate expression="customerSearchAuthenticationBB.customerGivesAuthentication()"></evaluate>
</transition>
View Replies
View Related
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
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
View Related
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
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
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
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
Jan 5, 2015
is this program correct? for Implementing two Stack in one array. how can i solve it ?
public class Stackation11 {
int max = 10;
int [] array = new int[max];
int top;
int top1;
Stackation11(){
[code]....
View Replies
View Related
Apr 24, 2014
after i am done calculating everything from numbers stack, i pop the last number and return it... my question is how can i catch an exception if the size of my numbers stack is greater than 1;
public static String evaluate(String input) {
char[] a = input.toCharArray();
if (input.isEmpty())
return "No input";
else if (input.equals(" "))
return "No input";
else if (input.equals(" "))
[code]....
View Replies
View Related
Apr 11, 2014
Write a method compressDuplicates that accepts a stack of integers as a parameter and that replaces each sequence of duplicates with a pair of values: a count of the number of duplicates, followed by the actual duplicated number. For example, suppose a variable called s stores the following sequence of values:
bottom [2, 2, 2, 2, 2, -5, -5, 3, 3, 3, 3, 4, 4, 1, 0, 17, 17] top
If we make the call of compressDuplicates(s);, after the call s should store the following values:
bottom [5, 2, 2, -5, 4, 3, 2, 4, 1, 1, 1, 0, 2, 17] top
This new stack indicates that the original had 5 occurrences of 2 at the bottom of the stack followed by 2 occurrences of -5 followed by 4 occurrences of 3, and so on. This process works best when there are many duplicates in a row. For example, if the stack instead had stored:
bottom [10, 20, 10, 20, 20, 10] top
Then the resulting stack after the call ends up being longer than the original:
bottom [1, 10, 1, 20, 1, 10, 2, 20, 1, 10] top
If the stack is empty, your method should not change it. You may use one queue as auxiliary storage to solve this problem. You may not use any other auxiliary data structures to solve this problem, although you can have as many simple variables as you like. You may not use recursion to solve this problem. For full credit your code must run in O(n) time where n is the number of elements of the original stack.
I wrote a code but still having a problem with it , am I allowed to use 3 while loops ?
public void compressDuplicates(Stack<Integer> s ){
Stack<Integer> backup= new Stack<Integer>();
int count = 1;
while(!s.isEmpty()){
int temp = s.pop();
[Code] .....
// example 1
Expected output : bottom [5, 2, 2, -5, 4, 3, 2, 4, 1, 1, 1, 0, 2, 17] top
My output: //bottom [17, 2, 2, 2, 2, 2, -5, -5, 3, 3, 3, 3, 4, 4, 1, 0, 17, 17] top
View Replies
View Related
May 2, 2015
For my classes I wrote I have puts strings into a stack and also a queue and am wondering how to take the top of the stack and the front of the queue and turn those into strings in my main class and run them through while loops that will detect if they are palindromes or not. Right now I am trying to peek and use first to put in my while loop but they don't work with the .charAt because they are not considered strings I think.
import java.util.Stack;
public class Palindrome {
public static void main(String[] args) {
// TODO Auto-generated method stub
String enteredLine;
int leftStack, rightStack;
int leftQueue, rightQueue;
[Code] .....
View Replies
View Related
Jun 16, 2014
In my application a series of inputs and a calculated result. At the end of each loop these inputs and calculations are displayed. After the loop is over with the user does not enter a string that is "y" or "Y", I want these inputs and the calculation to be displayed in a First in First Out format or a stack. I am using a LinkedList that is used in a class creating a stack.
Here is the code for my stack.
Java Code:
import java.util.LinkedList;
public class GenericStack<E> {
LinkedList<E> stack = new LinkedList<>();
public void Push(E element) {
stack.addFirst(element);
[Code] ....
Here is the code containing the main method. The methods other than the main method are probably not relevant to the problem, but take a look if you like.
Java Code:
import java.util.*;
import java.text.*;
public class FutureValueApp
{
public static void main(String[] args) {
GenericStack<String> stack = new GenericStack<>();
[Code] ....
The stack seems to be adding the same inputs and the same calculation from the first loop, even when it is on it's 2nd or third loop. I am getting this output.
Java Code:
Monthly Inv.Int. RateYearsFuture Value
$5.002.0%5$315.76
$5.002.0%5$315.76 mh_sh_highlight_all('java');
View Replies
View Related
Jan 3, 2015
I tried to write a program to implement a stack but it has a bug I am unable to solve.The bug is that whenever I choose an operation to perform, eg push, After performing the operation, the loop is executed once again and Invalid choice message appears, i.e. the default case. And then the loop again executes to choose further option. Here is my code
class Stack {
private char[] stck;
private int len;
private int top;
[code]....
View Replies
View Related
Oct 22, 2014
I am getting a stack overflow error for my method that recursively gets the height of an AVL tree. The odd thing is that it returns the height of the tree the first time I call that method, but when I call it again later on, I get that error, which I does not make any sense to me. I have a base case, where it is supposed to stop when the node is null, but it never reaches that. Also, when I print out the values, it alternates b/w three values: 5, 4, and 24. Something else, which I think is important to state, is that if I put the print statement before my base case, the IF, I get a warning stating that my entire IF statement is dead code...but why?
is that everytime I insert/delete a value into the AVL tree I must make sure that it is height balanced (none of the siblings may have a difference in height from each other > 1); if its not height then I rotate certain nodes accordingly. The first 10 items that I input are: 100, 50, 24, 200, 190, 10, 5, 190, 100 and 4. The pre and in order prints of these, from the console are:
PRE ORDER: 100 10 5 4 24 50 200 190 100 190
IN ORDER: 4 5 10 24 50 100 100 190 190 200 .
private int rheight(AVLNode<E> node) {
//if i put the print statement here, my IF becomes "dead code"
if(node == null){
return 0;
}
else{
[code]....
View Replies
View Related
Dec 3, 2014
I am working on implementing a stack using a linked list. Programming the stack operations (push, pop, isEmpty, etc.) was easy but my directions were to provide the user with a menu to choose the operation that he/she wishes to perform. I am new to JFrames/Menus so how to make the stack operations available in a menu.
View Replies
View Related
Jun 3, 2014
I was cannot do the action with + - * /.so i cannot have an output.where is the problem ?
Java Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.util.Stack;
[code]....
View Replies
View Related