I first learned Java because it seemed popular, and I became interested in building desktop interfaces with Swing. However, Swing has been very difficult to style, and I found JavaFX confusing to set up. Since May, I have been trying C# with Avalonia, but XAML and its tooling have been frustrating. Importing images sometimes makes the previewer crash, and afterward the application may not run correctly with dotnet run. I have deleted projects in frustration and now feel overwhelmed, as if I wasted time switching from Java. I mainly want to build desktop applications for fun. Should I return to Java, continue with Avalonia, or choose a different framework?
4 Answers
It may help to step back from GUI frameworks and strengthen your programming fundamentals first, especially basic object-oriented programming, debugging, and reading error messages. Compilers and build tools are usually deterministic rather than arbitrary, so learning to isolate a small failing example will make problems much less overwhelming. Start with tiny programs and add one feature at a time.
The failures I was describing were mostly with the XAML tooling rather than the C# compiler. The previewer can crash after importing an image, and sometimes the project will not run afterward, which made it hard to tell whether I had made a coding mistake or encountered a tooling problem.
Before choosing another framework, figure out what you actually want to build and why. Since your goal is learning and making desktop apps for fun, you do not need to find the perfect technology immediately. Pick one reasonably documented toolkit and give it a fair amount of time instead of restarting whenever you hit friction.
You could also try Godot, even though it is primarily a game engine. Its UI tools are fairly approachable and can be used for small utility applications, and it supports C#. That said, it is best viewed as an alternative for experimentation, not proof that switching again will solve the underlying frustration.
JavaFX is still a reasonable choice if you already know Java. It has a learning curve, but it is capable of building desktop interfaces, and you can avoid switching languages while you learn GUI concepts. Try following one small, complete tutorial and keep the project simple rather than repeatedly changing frameworks.

A simple toolkit such as GTK, Qt, or FLTK can be useful because you work with the UI directly instead of also learning a complicated designer or markup system. Once the basic event loop, widgets, and layout concepts make sense, higher-level frameworks become easier to understand.