Swing/AWT/SWT :: Track Down Why SetViewPortView On A JScrollPane Is Taking So Long
Apr 27, 2014
I've built up an unreasonably large and unreasonably complicated JPanel. Unfortunately, when I use setViewportView to add it to a JScrollPane, a get an extended UI freeze—that operation takes several seconds. I'm trying to figure out what's taking so long. I've tried some fairly extreme things, like overriding the paintComponent, PaintComponents, paintChildren, paint, repaint, validate, revalidate, and validateTree methods in the panel with no-ops to try to figure out what's taking so long, but to no avail. I've tried validating the JPanel before adding it, but that has no effect. If I override the addImpl method of the scroll pane, that makes things quick, but it doesn't really narrow things down much.
I have a primefaces datatable with about 52000 records to be fetched.Since it is a large dataset,i tried using live scrolling feature of primefaces with scroll rows equal to 20.THe number of columns is 53.The table also has filtering and sorting feature on its each column.Still i am not satisfied with the performance of the table.It takes about 15 secs for the page to load,worst thing is that it takes about 65 secs for the next set of 20 records to be loaded on reaching the end of scrolling.
Just for testing i reduced the total number of records to 25000 and the preformance improves with scroll time of 29 secs.I am really not able to understand why it is taking this much time when i am displaying only 20 records at a time.The total number of records should not have affected the performance.
I am trying to create a JScrollPane with buttons in it, but I noticed that when I try to scroll, the items all move into ONE row at the top of the JScrollPane. How do I have them vertical? Is there something wrong with the way I am setting up the JScrollPane?
I have a JScrollPane with a JTextArea. The JTextArea is loaded with 10 lines of data. I have two JCheckBox's. The first check box sets the scroll to 10. sp.getVerticalScrollBar().setValue(10); The second check box reloads (ta.setText(text)) the text and then sets the scroll to 10. Why does the second one not work? I have attached a simple program. It is probably easier for you to compile and run than for me to go into detail explaining further.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Tester extends JFrame { private static final String text = "1
When I add to a JScrollPane (I'm adding to a JPanel then putting that in the scroll pane) it displays as many items in one row as possible. How can I make it so that it only displays one per row?
I have Implemented a user control / component that allows zooming in and out of a displayed BufferedImage, for discussion's sake, 3rd party libraries are excluded and everything must be from scratch.I have an image rendered on a JPanel, the JPanel is contained within a scrollbar.
Zooming inout etc works perfectly.The Scrollbars are rendered correctly on Zoom In and disappear when I zoom out.I want to add the functionality of focusing on a specific quarter of the displayed image via four dedicated buttons, each send an int (1-4) to a method, that controls the scrollbars.
And resizes the image whilst scrolling the scrollbars accordingly,The method works as expected, and the scrollbars go to the desired location, But there's a catch:The first click on any of the above buttons does not work, but from the second click and on, everything works great!
I'm writing a Java Swing program for my software development class to allow a user to create a map for a side scroller video game. I'm stuck on a particular part of my GUI where I'm trying to create a properties box for specific tiles. When I draw the components onto the JPanel and display it as it is, it shows two check boxes per row. On the ScrollPane however, all the check boxes go straight onto one line and draw out the scroll pane. Right now I am only concerned with just making the basic GUI.
Here is what I have so far:
Within the main class, I am creating the JFrame and adding components to it. I am attempting to create a JScrollPane which will hold the properties check boxes...
Here is the method where I am implementing the code. It works, but it doesn't display correctly.
private void createPropertiesBox() { PropertiesBoxPanel pbp = new PropertiesBoxPanel(); propertiesBox = new JScrollPane(pbp); propertiesBox.setViewportView(pbp); frame.add(propertiesBox);
[Code] .....
I've been tinkering with this code for quite some time now and I cannot seem to make a breakthrough on how to fix this.
I'm developing a Swing application for the first time. To test my application, I have currently hardcoded some text labels and fields in a JPanel, so that a user can enter input details for a maximum of 3 segments. But this limits the maximum number of segments to 3. However, the requirement is that when the user enters the number of segments (could be greater than 3 as well), corresponding number of input sets need to be taken.
Screenshot attached, with values entered.
Basically I want to know how I should go about taking the inputs from the user.
Returning true from getScrollableTracksViewportWidth() makes the table (or other Scrollable) size its width to match the viewport. I need the opposite: for the viewport to expand its width to accommodate the table (of course, limited by the constraints imposed by the scroll pane's container's layout manager) without reducing column widths i.e. setAutoResizeMode(AUTO_RESIZE_OFF).
I have achieved this by overriding
getPreferredScrollableViewportSize(): JTable table = new JTable() { @Override public Dimension getPreferredScrollableViewportSize() { return new Dimension(super.getPreferredSize().width, super.getPreferredScrollableViewportSize().height); } };
Now when the scroll pane is added at BorderLayout.CENTER and the frame is pack()ed, all columns of the table are displayed, without need for a horizontal scrollbar.
I have a JTable that is within a JScrollPane. If I try to write add a MouseListener to the JTable it never fires. However, a mouse event does fire for the JScrollPane which it is added to. Is there a way to prevent the JScrollPane from capturing the event or passing it along to the JTable?
So for a test i have a small array set as a jlist which is the contents of my jscrollpane, and it appears as if nothing is there until i adjust the window size by dragging it out or in... whats going on?
In my code where the Button Action Performed is created, I have done the following to ensure that the visibility of the JTable and JScrollPane have been set to true. But it does not work?
So, I have this simple program that paints a string on JPanel using g2.drawString("Hello world", 40, 120). Basically, I want to be able to keep track of many strings on the JPanel at once. I'm not sure how to do this. For example, I would want to have an ArrayList of objects that keep track of these strings.
I want to be able to click-and-drag these strings so I will need to know there locations, etc.
Right now, using g2.drawString, it only draws the string. I want something like gw.draw(myStringObject).
I have in my application a button that when it is pressed, runs a long running task (usually takes a couple of seconds....).
My problem is that while the task runs, I want to stop the button from receiving clicks. Unfortunately this is something I have not achieved.
I have tried creating a new thread and calling the long running method, and using the Display.geCurrent().asyncExec...
Examples of what I have tried so far:
myButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (myList.size() > 0) { myButton.setEnabled(false); myButton.setGrayed(true);
[Code] .....
In both cases, while the button is disabled and the cursor busy, if the user clicks the button, the long running method is ran several times - and this is what I want to avoid.
I have a swing application that gets football scores from a website using Jsoup.
When the "Get Scores" button is pressed, the scores are printed to a JTextArea with a JScrollPane.
I have also used a SwingWorker to update the scores every couple of seconds.
My problem is that every time the JTextArea updates, the JScrollPane scrolls back to the top of the text area. I wan the scroll bar to stay where the user left it.
Here is my code (The update is currently set to update every 1 second so you can see what the scroll bar is like).
import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class frame extends JFrame {
Can we cance/stop a long running database query execution instantly so that we can do any another task.
As i know swing uses a single thread i,e Event Dispatch Thread (EDT), But at the same time we can use Swingworker class for better use of UI. When we use Swingworker class the process goes to a different thread and our basic UI is not Frozen. Infact we can do another task. But what I want is I want to stop of cancel the execution of swingworker thread ( Because I that thread takes long time to execute). How can I do that??
I used ProgressMonitor and in the cancel option i canceled the task ( worker.cancel(true) also i closed the connection and statement for executing the database query using stmt.close() and conn.close() methods.
But it does not work. How to cancel a long running database background process in a Java Swing Program.
This piece of code is giving me the most trouble as I cannot convert the self defined class (Fraction) into int in order to store the elements in the variable (max). What is the best way to go about grabbing the next element and storing it in max and compare it to the previous to get the highest and lowest value?
System.out.println("Enter numerator / denominator"); frak[0] = new Fraction(keyb.nextInt(), keyb.nextInt()); frak[0] = max; for (int i = 1; i < frak.length; i++){ // starting from array element 1 System.out.println("Enter numerator / denominator"); frak[i] = new Fraction(keyb.nextInt(), keyb.nextInt()); if (max > frak[i]){ }
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?
I have a small bug in my program. The user is asked what person(s) information they want to access but lets say they want captain they must enter "captain" twice. I think it will make more sense to you with the code. I have searched all over to see what is causing the bug but still have found no resolution. I even tried making two different scanners but that didn't work either.
I know the while loop (line 16) I am using is causing the bug because it works fine without that but then I cannot validate the input.
package myproject; import java.util.Scanner; public class Enterprise { public static void main (String[]args){ String userInput;
I have a JFrame that houses a JScrollPane that houses a JTextArea (I set the console to output to the JTextArea). For some reason, when the frame appears, text is being printed like usual, but the scroll pane isn't rendered unless I hover over it or click on it. Also when I resize the frame, nothing appears unless I hover over it or click on it.
I've tried repainting the frame when everything is added to the frame and packed, but it doesn't change anything. I tried searching for other people who had the same problem, but most of them were relating to setting the layout to null (which I don't do) and using JPanels.
As you can see in the above image. I have create One jFrame inside it their is one jPanel. Inside jPanel their are dynamic buttons whose range can change. (its like text box if you add more text scroll bar will appear)
I want to add jScrollBarr/jScollPane to jPanel so that when more than 6buttons will be their, I can scroll it down/up. So my question is how should I place jScollPane using this DRAG-DROP tool. When i clicked on jScrollPane and tried to put it inside jPanel I am unable to set it's position. It's my first time to add jScrollPane for jPanel inside jFrame.
What I have so far are two classes, Movie class and MovieTestDrive class. I've to get the title, genre and ratings for movies and then put them into an array and call the playIt() method.
I would like to create a for loop to iterate three times for three instances of the Movie class but I don't know how to do it.
When I try to run the code, it won't work and I don't know if this is because I have Scanner running incorrectly whilst encapsulating my data. What I have so far:
class Movie { // Create instance variables for the Movie class. private String title; private String genre; private int rating; // Use getters and setters to set and display the variables.
I am working on a web-application where i have a functionality which generates reports based on the data from DB. for small amount of data its working nice if the data is huge its taking more time. to avoid this problem i developed a standalone batch where i generated the jar file for the sources in web-application and made a call to the appropriate methods.
But my problem is if web-application takes 10 secs to generate the report but in the case of standalone its taking nearly 3-5 mins to generate the same report. i didn't do much of the changes in code just using the same code as web-application
I am using tomcat 6 application server to run the web-application for standalone using batch commands.....
This is the code that I have so far, It will only print out the digit if it is entered first..How to I get it to print out all digits? and I am getting an error that the c is not initialized
import java.util.*; //Write a program that prompts the user for some text. Output only the digits in that text. Hint: Use a loop and the Character.isDigit method. public class Q1 {