JavaFX 2.0 :: Worker Threads - Created By Model Or By Controller?
Dec 8, 2014
Sometimes models needs to access blocking devices, like network cards, databases, files, and so on. This should be done by worker threads or services. But who is in charge of that? The controller or the model itself? I tend to say it is the model, as only the model knows about the fact that it accesses a blocking object. On the other hand, it is said that a model should be a POJO, so it would be the controller's job. Is there a best practice or general design rule?
I am working on an project in which some data needs to be received through socket , do some processing on it and then store on the database. After that it will display on GUI. GUI should be updated automatically.
I am able to implement basic model in which data is storing in the database and displayed then on the GUI. I tried to implement MVC design patter as well.
Now i need to create a GUI which can be used by several users at a time means several jvm session for the GUI. I got struck at this point.
Some detail: i have one jvm session in which i am receiving , processing and storing the data. Now i want to fire an alert whenever any new entry is made into the database. Also each time new GUI is opened it should be registered with the model so that model send updated data alert to all this users.
When i am trying to open several GUI and trying to register with the Model then it is not increasing count of registered user. For each time it is showing 1 count only and whenever a new entry is made count is showing 0. Is it because both are running in different jvm sessions ?
Some code for the model which is running in different package and jvm
GUI..
private void runApp() { //some gui code WindowListenerClass windowListener = new WindowListenerClass(this); frame.addWindowListener(windowListener) //registering viewer with the model Model.setNewAlarmEvent(this); tableModel = windowListener.getDefaultTableModel();
I am unable to connect my javafx scene to mysql database. I get a java.lang.NullPointerException every time. I tried searching everywhere possible but no answers available. This is the Person class (super class for Teacher class):
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */
I do Java for decades, but am a FXML beginner. Currently I do FXMLLoader.load(fxmlFile) in Application.start(), which is working well. My Application instance is creating a background thread in Application.init() which feeds several custom application properties with incoming data taken from a remote model (wrapping a sensor hardware). Some of my windows shall later be able to access those properties. So the question is: How can I inject my Application instance into the FXMLLoader-created controller instances auto-bound to the FXML-created Scene instances?
I used the SceneBuilder to create an applications and it works quite well. Now I got a problem to set the pref. size of a ScrollPane to the size of the app.
I want to install a binding between the scroll pane's pref. size and the stage's pref. size. Since the scroll pane field reside in the FXMLController class I need a way to access this field.
I have tried to implement MultipleSelectionModel with mostly success in TreeView, but definitely with quirks. I've looked at the implementation in TreeView and it's off putting to say the least. Hopefully it doesn't need to be that complicated. For now, all I need is it to handle SINGLE SELECTION, but it needs to be solid. I've put in a lot of println's to see what gets called. Most don't seem to be called. I'm relying on TreeView to look up the object being selected, I'm not sure if that's appropriate. The internal implementation seems to worry about tree state a lot.
It baffles me as to why there isn't a base class from which to extend or reuse? I'm doing this so I can delay a selection (make it vetoable), also to handle drag/drop more cleanly (so target won't move because of drag action).
private class VSelectionModel extends MultipleSelectionModel { List<Integer> baseSelectedIndexes = new ArrayList<>(); ObservableList<Integer> selectedIndexes = FXCollections.observableList(baseSelectedIndexes); List<Object> baseItems = new ArrayList<>(); ObservableList items = FXCollections.observableList(baseItems);
What is the best way to synchronize a Model representing a complex UI composite w/ a FlowPane's backing list?
Currently I have a change listener on the Model. Upon an add I create a new UI composite and manually add it to the FlowPane's backing list via flowPane.getChildren().add(). Similarly if there is a remove, I iterate over the FlowPane's children, grab the right Node, and remove it. Similarly, if there is a modification detected, I iterate over the FlowPane's children, grab the right Node, remove it, recreate the UI composite, and re-add it to the list. I also need the list to be sorted, so I implemented a UIComposite comparator and call FXCollections.sort() on the FlowPane's backing list. I feel like that is hacky, but it works. It would be cool if I could maintain sort order in my model somehow and have that automatically propogated to the FlowPane's list.
I am correct in assuming that there is no way to have a complex binding in between an ObservableList<CompositeViewModel> and the FlowPane's backing list (ObservableList<T>)?
Some kind of translator that could create a new UIComposite whenever there is a new CompositeViewModel added to the Model list.
I'm using Scene Builder 2.0 and have added an ImageView to the parent AnchorPane. I've added my PNG files for the app icon and the various buttons. I select the ImageView in Scene Builder and then crawl the filesystem to the project package folder and select the PNG for the Image. The assigned image is displayed in the Imageview in Scene Builder in both design mode and Preview mode.
While everything else shows up properly when the app is executed, the image assigned to the ImageView does not display.
Just i want add a progress bar for listening MySwingWorker's setProgress updates. When buton clicked swingworker should executed and progress bar should come to screen. I read many articles about that but not understand correctly. Because i am beginner in JAVA.
Question1: Should i (create new class) or (implement to current gui or swingworker class) for progressbar?
Question2: Should i fired progress bar first and execute swingworker from progressbar class? or should i execute swingworker first and fired progress bar later and how?
Model View Controller design pattern I completely understand then I was told about the observer controller pattern. After reading and reading I and watching video clips on youtube explaining it I have a question:
Isn't the actionListener the observer so to speak. It is firing whatever action it is told to do and dynamically updates the program to.
Example, I have a JButtons and a JTextArea. I press the button and it gives the current stock price of some stock, I press it again it refreshes. Sounds like an observer to me... Am i on the right track here?
create an application following the MVC pattern. My frame is composed of a JTable with some JComboBox and classic next/previous buttons to page the table. The table shows data of current accounts of the members of a family. My problem is figuring out how the controller interacts with the view, for example to enable / disable buttons or reset and reload the data in the comboboxes. In the view class all the graphical components are private instance variables. What is the best approach to ensure that the controller can act on them?
I need to create in the view public methods to act on each component like getSelectedItemAccountCombo, getSelectedItemYearsCombo, getSelectedItemMonthCombo, populateAccountCombo (ArrayList <String> list), setNextButton (boolean b) ... and so on (I think that the methods would be many ...) This approach does not convince me because I think that the class is fouled by procedures that should be in the controller class.
I have used jsp's to passing request to the servlet or controllers. but we can also pass request from javascript using ajax and sending data using json.
what is the good approach and why? or does it depends on the situations? is yes, what kind of situations?
When I hit the url at the first time my call goes to the spring controller and sets the userDetails objects in the modelAndView.addObject("userDetails", userDetails.getUserDetails()) and returns the userDetails.html page. if I click any link in the same page i want to pass same (userDetails) object thru javascript or jquery and calls the another(controller) method and returns the same (userDetails.html) page.
It means how can I pass the java object thru javascript or jquery and calls the controller. If I get the same object in my controller i can avoid calling the db again.
I have a controller that on the basis of commands (formaction and subaction) dispatch requests to different jsp pages. But somehow when I am debugging my application, I can find duplicate request coming to the controller, so one jsp page does load twice. I am not sure from where the duplicate request is generating.
I use a bluetooth module (dwengo) in combination with a microcontroller (PIC16F877A). I want write a bluetooth client program in java to communicate with the microcontoller. Examples of clients on internet do not work or give errors I cant'n resolve. There is one program ( SampleSPPClient ) that give no errors and shows the bluetooth devices present.
But when I choose my bluetooth module I got an error (Device does not support Simple SPP Service). I think that I have to use an other service of bluetooth but I don't know how to implement. Here is the program I tried to use ....
How can i use multiple textures on a model? I have the .OBJ loader and .MTL loader and everything is working fine. I can use a single texture. But i have a model that has 2 textures. How can i use both of the textures?
Boolean retrieval model using skiplist. I don't know how to code it. I have modified it but I'm not sure it work out. What are the modifications I can made.
/**My requirement is to implement two methods for Boolean Retrieval:
● index(String dir) ○ index()supposed to go over all files under "dir". There will be no subdirectories inside it.
● retrieve() ○ retrieve() supposed to return name of all the documents under "dir" that satisfies the given query. Note that, only basename of the files are to be returned, not the full path. ○ Query can be of two forms: ■ OR: returned doc should contain at least one term from the query. ■ AND: returned doc should contain all the terms from the query. **/
import java.util.HashSet; import java.util.Vector; public class BooleanRetrievalModel implements DocSearch { // begin private class private class SkipList { // Node in skip-list
I have some paired values stored as a hashmap in my model, for example sake, we'll say the 'key' is a Manager's ID and the 'value' is the name of their department, so 'betty123' could be a key to a value 'IT', and 'dave345' could be a key for the value 'Finance'. This hashmap is populated from a database. In my form, I have two "Select" dropdown fields, one for "Department" (with fields which match the values in the hashmap), and one for "Manager ID". I want to autopopulate the "Manager ID" field when the "Department" field is changed, based on the values in the Hashmap. I understand that I can't access dynamically elements of the hashmap in a script, so, for example, I can't do this:
var specificDepartment= $("#department"); var managerId = ${departmentHash[specificDepartment]}; $("#manager").val(managerId);
Because this code is dynamic based on the value of "department" at the time it's run, whereas the departmentHash object is generated when the page is loaded.
Is there some other way I can do this? Am I approaching it the wrong way? FWIW, I'm using Spring 4.1.1 and jQuery 1.8. I understand the conceptual block with code I wrote above, but I can't for the life of me think of an obvious solution although I'm sure this is a fairly commonplace problem in web development.
I understand how vectors work I'm currently using one to store my id's from my txt file but how do you put them in a defaultComboBoxModel?
DefaultComboBoxModel defaultComboBoxModel = new DefaultComboBoxModel(); //declare a vector object that will hold a string (only thing that works with comboboxmodel Vector<String> myVector=new Vector<String>(); //try statement try{ FileReader fr = new FileReader(file);
[Code]...
Any example of how a vector is used with a defaultComboBoxModel so I can then use that to populate my JComboBox?
I get the value from database and display in table , price value will show 6 decimal and date value will show date and time.What to do to show only 2 decimal places and only date e.g. 1/1/2014 in the table ?
When one is needed I simply add it to the table. In this case however whilst updating the model via table update in tableChanged method I have the impression of 2 identical models because the update happens twice (use of audio).
Is it not true that adding a new model cancels out the other ? I test for which model is attached to table and add the correct one depending on the data required.
/* * * You need to implement BooleanRetrievalModel using SkipList. * You should have everything within this file. */
import java.util.HashSet; import java.util.Vector; public class BooleanRetrievalModel implements DocSearch { // begin private class private class SkipList { // Node in skip-list