greptilian logo

IRC log for #friendlyjava, 2020-04-07

##friendlyjava on freenode

| Channels | #friendlyjava index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

All times shown according to UTC.

Time S Nick Message
06:59 aditsu hi
07:58 mr_lou joined ##friendlyjava
08:57 kirua_ joined ##friendlyjava
18:34 javabegina joined ##friendlyjava
18:35 javabegina good evening
18:35 aditsu hi
18:36 javabegina i have a problem with a GUI application is it possible to get some tips here?
18:36 aditsu it is possible :)
18:37 javabegina :-)
18:38 javabegina actually i am new to java and wrote a small program for plotting graphs. the problem i have is i dont know how i can Update my GUI. in the case the Center of a BorderPane. I got a button when i press it the Graph will be plotted but it never erases the previous one so that i get 2 Lines. how i can archieve that? https://pastebin.com/1L4TKA0W
18:39 javabegina this is not the fill code since the full code persist of more classes. but i think it should be enough to have an overview.
18:39 javabegina full*
18:40 aditsu ah, javafx
18:40 javabegina i asked already in the java channel but none helped me out.
18:40 javabegina yes javafx
18:41 javabegina i m actually very stuck. i was looking some tutorials most of them talk about oberserver patterns or timers but they dont explain how i refresh a whole GUI / part of a GUI.
18:42 aditsu it looks like you draw the graph by adding some Path elements to the centerContent
18:43 javabegina center content is the middle Pane where i draw everything
18:43 aditsu you also make some Ellipse dots, but you don't seem to use them for anything
18:43 javabegina i use them
18:43 javabegina the Ellipse dots are deactivated
18:44 javabegina atm. they actually just show where the coords will be placed on the graph
18:44 aditsu anyway, to clear the graph, you should probably remove all the children of centerContent
18:44 javabegina hm something like: root.getChildren().clear(); ?
18:45 aditsu probably, you can try that
18:46 javabegina i tried it in the update method earlier. it completely messesup the layout after i put root.getChildren().add(centerContent);
18:46 aditsu do it at the beginning of plotGraph
18:46 javabegina i did that
18:46 javabegina it actually will but itself over the topMenu smh
18:47 javabegina uhh wait. i need to set it again to the center no?
18:47 javabegina root.setCenter(centerContent);
18:47 aditsu that shouldn't be necessary
18:48 javabegina hm if i simply add it the centerContent overlaps the whole BorderPane like it has no fixed position
18:48 javabegina and my textfield nor the button is accessible
18:49 aditsu can you try to make a self-contained example? it's hard to know what you mean without being able to run the code
18:50 javabegina uff wait
18:50 javabegina i think it works now
18:51 javabegina enterContent.getChildren().clear(); does the magic in the update() function
18:51 javabegina centerContent.getChildren().clear()
18:51 javabegina i do not even need to add it again
18:52 aditsu oh, I just realized you wrote *root*.getChildren().clear() before
18:52 javabegina yes
18:52 javabegina my mistake
18:52 javabegina root remove the whole Panes top center and bottom
18:52 javabegina which ruined the whole view
18:53 aditsu right
18:54 javabegina https://gyazo.com/195ad3bed27dd2d15e91f32a0b056e37
18:54 javabegina works now perfectly
18:54 aditsu alright 👍
18:54 javabegina many thanks for your help
18:55 aditsu you're welcome
18:55 javabegina why are here not so many people? the real java channel is full but none is talking or people cant help :D
18:56 aditsu probably not many people know about this channel
18:56 javabegina i found it by the list since i was looking for an alternative channel
18:57 aditsu btw there is another way to draw things in javafx, using the Canvas class
18:57 aditsu that lets you draw into an actual image; the way you did it adds separate UI elements
18:58 aditsu both have pros and cons
18:58 javabegina i tried it with the canvas class but i had problems  to put eventHandlers to the items
18:58 aditsu oh yes, if you want it to be interactive, your way may be easier
18:58 pdurbin We're here because we like aditsu. And Java. :)
18:58 javabegina i wanted to put an eventHandler to the Ellipse before
18:59 javabegina but i struggled getting it to work
18:59 javabegina when i did put an event to the eclipse it simply...did nothing
18:59 aditsu pdurbin: aww :)
19:00 javabegina is it even possible to add an event to a drawn circle?
19:00 aditsu javabegina: well, you can try it again, make sure to add the ellipse to your content
19:00 javabegina i suppose on Canvas i dont use Ellipse ep = new Ellipse(); or?
19:01 javabegina the ellipse is part of the graphic context its not an object how i could put it into the content?
19:01 javabegina i m confused now :D
19:02 javabegina which way is the best to draw
19:02 javabegina since i want to make more interactive programs
19:02 aditsu don't bother with Canvas then
19:03 aditsu continue what you were doing
19:03 javabegina i just want to learn it correctly thats why i m asking
19:04 aditsu I don't have a lot of experience with this, but I think what you're doing is correct (without Canvas)
19:04 javabegina ok
19:04 javabegina in that case i m happy :-)
19:05 javabegina btw the way i coded is that correct and clear or should i work with even more classes and use MVC patterns for it?
19:08 aditsu don't really care about MVC; I think your code could be simplified, but it doesn't look too bad
19:08 javabegina in which way simplified? got a hint? so that i can take a look
19:09 javabegina i know i could probably make a DrawingHandler
19:09 javabegina which draws the stuff
19:10 javabegina and for the basic declarations of the diffrent Panes well.. i had no other solution to make it shorter
19:11 javabegina btw. i just found a tutorial how i could realize my program with the canvas aswel
19:11 javabegina its kinda...hm yes like drawing with photoshop or such program need layers and move those layers around. everything moveable to a diffrent layer
19:13 aditsu well, for example, you could make a method to create a Path for a line (or even multiple lines), instead of duplicating the code for it
19:15 javabegina ur right
19:16 javabegina but the first one is a moveTo not a LineTo so the commands are only used 1 time
19:17 aditsu you have basically the same code repeated 5 times: a MoveTo followed by a LineTo
19:17 aditsu also I think your whole graph could be a single path with many LineTo's, instead of many single-line paths
19:18 javabegina the paths are drawn based on a Generated Value Table
19:18 aditsu that's irrelevant
19:18 javabegina this one atm. is only plotting ax+b but i gonna put some more complex ones
19:18 javabegina hm
19:19 javabegina 1 single Path based on the Value Table?
19:19 javabegina hm how this could be dont
19:20 javabegina done*
19:22 aditsu basically, MoveTo with wh[0], then for(int i = 1; i < wh.length; i++) add LineTo with wh[i]
19:24 javabegina you are talking about the plotGraph correct?
19:24 aditsu yeah
19:25 javabegina if i understand you correct it means i created a global Path Object and just add all Lines and moveTo to this Object and when its done i just simply attach it to my Pane?
19:25 aditsu also, in the current version, you can change to i < wh.length - 1, then you don't need the try/catch
19:26 aditsu yes, but it doesn't need to be global, it can be a local variable in plotGraph
19:27 javabegina i didnt know i could do it that way
19:27 javabegina will be the path then be smoother bezier like?
19:27 javabegina for example for x^2 plots
19:28 aditsu it should look the same as before
19:28 aditsu if you want a bezier path, you need to program that
19:28 javabegina sounds fun
19:29 aditsu there's CubicCurve for example
19:30 javabegina mhm
19:31 javabegina still need the calculation for the control points
19:31 aditsu or you can just use straight segments, but more of them and shorter
19:31 javabegina that was actually my idea at the beginning
19:31 javabegina but 100 segments is never enouh :D
19:47 javabegina my plotting mehtod looks now like this: https://pastebin.com/7UQrrsjc
19:59 aditsu that's.. not what I said :p
20:02 javabegina thats how i interpreted it :D
20:02 javabegina it had 1 Path object
20:02 javabegina and puts all the values into it
20:02 javabegina and at the end adds it
20:02 aditsu well.. yes, but you only need the first MoveTo
20:02 javabegina why?
20:03 aditsu when you draw a line to a point, you don't need to move to the same point again, you already got there
20:05 javabegina i though everytime you draw a new point you need to go to its location
20:05 javabegina i gonna test this
20:06 javabegina dang
20:06 javabegina that works :-)
20:07 javabegina so i only need to move 1 time to a position and from there it simply connects?
20:07 javabegina no matter which formula a gonna use later on?
20:08 javabegina i have my thoughs actually about 1/x hyperbel
20:08 aditsu yeah, it's like drawing lines on paper
20:09 javabegina https://pastebin.com/QdKWyYvW
20:09 javabegina now its like u told me
20:09 aditsu well, not exactly, but close
20:10 javabegina what did i miss?
20:10 aditsu you went from 0 to length-1 and used i+1, I said from 1 to length, using i
20:11 aditsu it's the same thing in the end, but clearer
20:12 javabegina oh ok yes true starting at 1 instead of 0 hm yes
20:14 aditsu you can get rid of a lot of parentheses and the -1's
20:18 javabegina https://pastebin.com/iR6ZDun2
20:19 aditsu you only changed one of the 3 things I mentioned first
20:19 aditsu that's wrong
20:19 javabegina lemme check
20:20 javabegina i took the parentheses away, replaced the i+1 and did set the moveTo outside starting at index 0
20:21 aditsu oh, you replaced the i+1 in 1 or 2 places, but not in the LineTo
20:22 aditsu and you're still going to length-1
20:23 aditsu then I said you can get rid of the -1's
20:23 javabegina yep
20:23 javabegina overseen that
20:24 javabegina https://pastebin.com/XwiS6Vd3
20:24 javabegina iff
20:24 javabegina dang :D
20:25 javabegina how i coulnd even get an error at + -1
20:25 aditsu it's valid, but very clumsy
20:25 javabegina prbably java took it as -
20:25 aditsu -1 is a number
20:26 javabegina ofc
20:26 javabegina https://pastebin.com/7TNMNgE9
20:27 javabegina i actually didnt know that java validates + - 1 as -1 i mean 2 signs directly after eachother
20:27 aditsu well.. ok, but you're making the tiniest steps of improvement.. what's the point in multiplying with 1?
20:28 aditsu a + -1 * b -> what's wrong with a - b?
20:28 javabegina well i had actually the problem that the Y axis was upside down
20:29 javabegina so i multiplied by -1 to get it correct in the coordinate system
20:29 aditsu you could have just replaced + with -
20:31 javabegina thats actually right.
20:32 javabegina https://pastebin.com/GATnhjAb
20:32 javabegina now it should be fine
20:33 javabegina at least i learn alot from this very happy about that
20:34 javabegina practice makes perfect
20:34 aditsu that looks better, can probably be simplified more
20:35 javabegina i could put the coord into a Point structure aswel coordX and coordY
20:39 javabegina looks actually extremly compact now
20:39 aditsu still looks like a lot of duplication to me :)
20:40 javabegina mhm
20:40 javabegina the ellipses i suppose
20:40 aditsu when you have duplicated code, it's easy to make mistakes, like not changing all of them when you want to make a change
20:41 javabegina facts
20:41 javabegina i know the Ellipse are duplications too
20:41 aditsu I'm mainly talking about the "center + something * offset" calculations everywhere
20:41 javabegina oh yes
20:43 javabegina well no idea how i could make this simplier now except putting it into a variable before i calculate
20:46 aditsu well, looking through the API, the best way might be to set translate and scale values on the path
20:48 aditsu basically changing the whole coordinate system of the node
20:48 javabegina mhm
20:48 javabegina thats now new
20:52 javabegina translate sounds nice
20:53 javabegina could  just simply define the center point at the beginning
20:53 javabegina and then just move the offset
20:54 aditsu set scale for your offset
20:57 javabegina lets see if it works
20:57 aditsu you may need to experiment a bit
20:58 javabegina https://pastebin.com/LWXsy7ih
20:58 javabegina lol
20:58 javabegina https://gyazo.com/a976c96a8e772fc923daa11d904af713
20:58 javabegina thats a bit.... yes
20:58 javabegina lol
20:59 javabegina looks strange
20:59 aditsu ok, I guess it also scaled the thickness
21:00 javabegina :-) yes
21:03 javabegina i actually cant find a solution how i can change the thickness
21:05 aditsu you can set the stroke width to compensate.. or you can revert to modifying the points, but in a single place
21:15 javabegina works good now
21:15 javabegina i gonna refactor the other stuff aswell i m sure there is alot to change
21:15 javabegina aswel
21:15 javabegina many thanks for your help and your time
21:22 aditsu alright :)

| Channels | #friendlyjava index | Today | | Search | Google Search | Plain-Text | plain, newest first | summary

##friendlyjava on freenode