Swing/AWT/SWT :: What Is Event-dispatching Thread For GUIs And Why Use It Over Main Thread
Sep 20, 2014
I'm currently learning about Swing but I can't get my head round this piece of the code. Here is a simplified gui (not interested in the gui part but the execution)
public class SwingDemo implements ActionListener {
SwingDemo(){
JFrame jfrm = new JFrame("Simple gui pro");
//rest of code
public static void main(String[] args) {
new SwingDemo();
}
I get the above, create a new instance of SwingDemo in the main thread which starts up the gui through the constructor. However, then the tutorial says that I should avoid doing the above but do this instead:
public class SwingDemo implements ActionListener {
SwingDemo(){
JFrame jfrm = new JFrame("Simple gui pro");
//rest of code
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() { //why do this instead?
public void run(){
new SwingDemo();
}
});
}
}
Reading, it talks about an event-dispatching thread which has completely lost me... Why not just instantiate the object directly instead of creating another thread?
View Replies
ADVERTISEMENT
Oct 17, 2014
im having an issue with the 3rd thread that are supposed to merge the two sorted sub arrays , i pass the 2 subarrays to my runnable function sortlist and they are renamed IntSortList 1 and 2 and th1.start() and th1.join() are called and it works fine, but then i have another runnable constructor that takes IntSortList 1 and 2 but it does take a runnable. below is the code in my main,
Runnable InSortlist1 = new sortList(data2p1);
Runnable InSortlist1 = new sortList(data2p1);
Thread th1 = new Thread (IntSortlist1);
Thread th2 = new Thread (IntSortlist2);
try
{
th1.start();
th1.join();
[code]....
View Replies
View Related
Jan 11, 2014
I am new to java and still learning. I am trying to execute the code below which compiles successfully, but getting the following error:"Exception in thread "main" java.lang.NoSuchMethodError: main"
Code:
class Dog{
int size;
String name;
String breed;
void bark(){
System.out.println("woof woof");
}
}
class DogTestDrive{
[code]....
View Replies
View Related
Dec 26, 2014
import java.io.Console;
public class Introductions{
public static void main(String[] args){
Console console = System.console();
console.printf("Hello!My name is ---");
}
}
Output :-
Compiling Introductions.java.......
-----------OUTPUT-----------
Exception in thread "main" java.lang.NullPointerException
at Introductions.main(Introductions.java:5)
[Finished in 2.2s with exit code 1]
View Replies
View Related
Sep 10, 2014
exception in thread main java.lang.nullpointerexception code 45 and code 116
the lines are highlighted and no the code tags did not show up when I uploaded the file.
I typed '[code]' below:
Java Code: /**
This program demostrates rainfall for a year
*/
[Code].....
View Replies
View Related
Aug 31, 2014
I use Eclipse IDE
public class Emp {
private String name;
private String jobTitle;
public void setName(String nameIn){
name=nameIn;
[Code] ....
<terminated> TestClass
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at TestClass.payOneEmp(TestClass.java:21)
at TestClass.main(TestClass.java:13)
View Replies
View Related
Apr 16, 2014
I am working on a program that will allow a user to input grades for a class of four students who have taken two tests. Based on the grades entered, the program will calculate the averages of the two tests for each student and display it along with their respected letter grades.
Now I can get the program to compile successfully, but after inputting the grades in, I get the error message saying that it cannot format given object as a number. I am using 4 arrays to execute this program and maybe that's why I'm having the trouble? I'm not sure because I am still fairly new at this stuff and can't sen to resolve it.
I was having problems for a while and then finally got excited when I got it to compile without any errors and now I'm getting an error inside my program. All I need to do is format the numbers of the grades into something like: 000, and each of the averages as 000.0. I understand how to do it because I have done it in another program I've done in the past. I just don't know how to fix this error that is coming up.
here is my code:
import java.util.Scanner;
import java.text.DecimalFormat;
public class TestAverage
{
/**
* A program that will store and process 2 test scores for a class of 4 students.
* The program will prompt for the test scores as shown above in the sample run.
* After all the data is entered,the program will display the score for test 1, test 2 .
* The average of the 2 tests and the letter grade for the class for each student in a tabular format.
*
*
[code]....
View Replies
View Related
Jul 16, 2014
class A extends Thread
{
String str;
public void run( )
{
//random stuff
}
}
[Code]....
View Replies
View Related
Dec 17, 2014
My program is user input 20 char and the program will print the most common. So I use another int arr which count the number appears in the original array. i know its not so Effective but I don't know why it run but it stop in the middle. I got this code :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 20
at Ex2.common(Ex2.java:39)
at Ex2.main(Ex2.java:23)
import java.util.Scanner;
class Ex2 {
public static void main(String[] arg) {
Scanner reader = new Scanner (System.in);
char[] arr=new char[20];
System.out.println("Please enter 20 chars:");
for (int i=0;i<20;i++)
[Code] ....
View Replies
View Related
Oct 8, 2014
How to access one thread from another thread?
View Replies
View Related
Mar 29, 2014
I'm struggling with a small project. I have 2 jFrames. The first frame has a button that...
- Display's the second frame containing a progressbar
- Starts a heavy processing thread
I need to update the progressbar on the second jFrame, from a thread started on the first jFrame.
I have 2 problems:
- How do I update the progressbar?
- When the button is clicked, an empty second frame is displayed with no controls. The controls are only rendered/shown, after the large thread process is finished...
I've attached to this post a small screenshot, showing the main idea ...
Source code:
Button action on the first frame:
private void btnGoActionPerformed(java.awt.event.ActionEvent evt) {
Progress progress = new Progress(); // The second frame
progress.setVisible(true);
clsProcess myProcess = new clsProcess(); // The thread process
myProcess.start();
[Code] ....
View Replies
View Related
Apr 11, 2014
I am try to move 2 ball at same time in different position but only one ball is display.
Here is my code I used two class one extends JPanel and another for JFrame
package usageThread;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;
public class ball extends JPanel implements Runnable {
[Code]...
View Replies
View Related
Apr 23, 2014
I am new to threads, This is a project about 2048 game to be more accurate, and i want this project to run in this thread that i make in main...
My main:
public class Execute {
public static void main(String[] args){
Display d = new Display();
Shell s = new Shell(d);
Model m = new Game2048Model();
View ui = new Game2048View(m.getBoardArr(),d,s);
[Code] ....
And the error is:
Exception in thread "Thread-0" org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Display.error(Unknown Source)
at org.eclipse.swt.widgets.Display.checkDevice(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at view.Game2048View.run(Game2048View.java:55) //problem at Run
at java.lang.Thread.run(Unknown Source)
Here is the problem....
@Override
public void run() {
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
display.dispose();
}
View Replies
View Related
Jan 7, 2015
I'm developing Chat application GUI using SWING. My GUI has two JtestAreas one for displaying message that i was sent, and another for displaying replay coming from server. I was used Thread.sleep(1000) after message sent . Due to that, AWT-EventQueue-0 thread stops to display send message in first JtextArea and waits until it get response from server. After got response from server, in one shot, My GUI displays both JtetAreas Content.
But, I need to display send Message and Response Message in two different shots. I know the reason why it displays in one shot.
View Replies
View Related
Nov 19, 2014
Doesn't matter now, I solved it but I don't know how to delete a thread...
View Replies
View Related
Feb 13, 2014
I want to try and run a thread that starts running on start and quits after pressing a key.I cant seem to detect keypresses. ci cant seem to add code: Post denied. New posts are limited by number of URLs it may contain and checked if it doesn't contain forbidden words.
its just a code snippit without links or anything..this is a small part... but how do i add a keyListener in here that listends to a random key?The class implements KeyListener and the overrided method "keyPressed" sets the isRunning boolean to false... but the keyPressed method is never executed.
public static void main(String[] args) {
Thread thread = new Thread() {
public void run() {
while(isRunning){
System.out.println("running");
try {
sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
thread.start();
}
View Replies
View Related
Apr 27, 2014
how to start a new thread
public class pracDraw extends JFrame {
private Color red=Color.red;
public int i;
private Color white = Color.white;
JPanel pr=new JPanel();
JTextField t=new JTextField();
[code]....
If u run it you can see that the JTextField (t1) is drawn on the panel along the line but it does so with a gray border. How do i eliminate that grey border and only draw the text field along the line and finally make the text field green after it reaches the end of line?
View Replies
View Related
Jun 25, 2014
import java.awt.Graphics;
import javax.swing.JFrame;
class node{
node(int a,node next){
this.a=a;this.next=next;
[Code] ....
The code was ran not right, I want it's result is: 1 2 3 4 5 and delay(1000) every time that it prints a number
Example: 1 (delay(1000)) 2 (delay(1000)) ....
And the paint must do that
View Replies
View Related
Apr 29, 2015
i know how to interrupt a thread in java but somehow it is not working.
My Application looks like this
public class MyThread {
public static void main(String[] args) {
Thread testThread = new Thread(new GreatThread());
testThread.start();
[Code]....
I always read that interrupting a Thread is so much better than the .stop method but somehow the interrupt method don't work?
View Replies
View Related
Dec 12, 2014
I have a program ive been working on and it works, but the flags in the runnables seem to shift the output down 1. for instance i commented playa3. start(); to see whats going on, if i just run playa1 i got no issues, as soon as i enable playa2, i get this output:
Game continues...
Dealer places King and Queen on the table.
Game continues...
Dealer places Queen and Ace on the table.
Player one with 'Ace' places his card on the table.
Player one with 'Ace' wins the current deal.
King Queen
Game continues...
Dealer places Queen and King on the table.
Player two with 'King' places his card on the table.
Player two with 'King' wins the current deal.
Queen Ace
the second time the dealer deals, player one places his cards on the table when he was supposed to do that for the first deal which he didnt. the last line there, (king queen) is just a print statement that is referring to the dealers hand that, that iteration is responding too. below is my code, i
import java.util.*;
import java.io.*;
import java.lang.*;
public class P5
{
public static int i, count, dealerFirstCard, dealerSecondCard, player1, player2, player3;
public static String cardSet [] = {"Ace","King", "Queen"};
public static volatile boolean dealerFinished= false;
public static volatile boolean playersFinished= false;
[code]....
View Replies
View Related
Oct 23, 2014
have written a new class that contains a thread.
From within that thread I try to call a method from within the same class the contain the thread. This method is not being called. I have confirmed that that section of code is being executed in the thread.
If you look at the following code, the thread being run is called MainThread ln 114, and the method it calls that is not being executed is called onprogressTime() ln 105;
package com.example.scott.coloursquares;
import android.content.Context;
import android.graphics.BitmapFactory;
[Code]....
View Replies
View Related
Mar 23, 2014
I start my thread, it's for a real basic game I'm learning. Everything was working fine, until I got to recognizing keys. It runs, and I can close using the mouse on the close command, but the keys aren't being generated from the keyboard. I copied it to a working sample, and here are the two files.
package testkeys;
import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
import javax.swing.JFrame;
[Code] ....
The idea was to set the return value to true if any key is pressed, thus quitting, for this short sample program. Problem, it never recognizes any keys pressed on the keyboard. New to java and threading.
View Replies
View Related
Dec 19, 2014
I have objects (baddies in a game) that have individual clocks/counters assigned to them (when I make an object, I fill an integer based array list with a new digit entry at a value of one) that all happens in threads. then in another thread, I am checking the whole list of clocks, to see if any are equal to a wanted value , then I am taking an action and reseting the clock at that point on the array list.
now, the problem is:even though my code says " yes, I've taken that action because the value of array position x was >= specified value and I will now reset the clock" it doesn't reset the clock. Here is what it looks like
*these are excerpts taken from a really big program, however they should stand on their own as they are individual classes
Java Code:
public class levelclock extends Thread {
public void run() {
while (Run2 == true) {
if (Run == false) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
[code]....
(Attached, just open up the zip and read the .txt)
View Replies
View Related
Nov 4, 2014
I created a main class called X and two Y and Z classes.
Y and Z implements Runnable classes.
class X contains a static array A that can be accessed in Y and Z.
The Run () method of the class Y reads an input file and populates the vector A.
The Run () method of the Z class uses data stored into the vector A to process some data.
The objective of using threads in this problem is: as the vector A is filled in the Run () method of class Y, the Run () method of the class Z will processing the received values in the vector A.
to do this I did the following calls in the main method of class X:
ObjectY y = new Y ();
Thready thread = new Thread (objectY);
threadY.start ();
ObjectZ new Z = Z ();
Threadz thread = new Thread (objectZ);
threadZ.start ();
is that correct? I'm getting the expected results, but dont know if the code is parallelized in fact.
View Replies
View Related
Mar 24, 2014
I need a small example of an object which is visible to two different threads.
Does saying "an object is visible to two threads" mean that it's fields or methods are being used in both the threads? I am not clear about that.
View Replies
View Related
Jul 10, 2014
I have situation where a user can request java server to send a value to an embedded device, and if the device is asleep, that value needs to be stored in a queue until the device wakes up and sends a position to java server, at which point the server checks if there is a value in the queue and if there is, it then sends that value to the device. The maximum size of the queue is 1 for now. And if the user makes continuous requests to java server, the old value is removed and the new value is added.
Initially I was looking into BlockingQueue, but the problem with that is, well, it blocks. queue.put(value) will block if queue is full, and queue.take() will block if queue is empty. I can't have something that blocks. When the device responds to server, server checks if value is in queue, if it is not then the server carries on the rest of its responsibility. Thus, I then entertained ConcurrentLinkedQueue. While queue.offer(value) and queue.poll(); allow you to add and remove values respectively from the queue without blocking, it does not allow you to set a maximum size limit of the queue. My queue must have a maximum size limit and it has to always be the newest value the user submits to the queue (where old values are removed).So this is what I came up with:
Java Code: class Unit {
private List<Integer> cmdQueue;
public Unit(){
cmdQueue = Collections.synchronizedList(new LinkedList<Integer>());
[code]....
I use Collections.synchronizedList, as I do here, do I still need to use synchronize as I did above?
View Replies
View Related