C# oder Java für Desktop Anwendungen?

Ich höre immer wie Toll .net sein soll und Blazor aber ich bin schon Webentwickler und mir ist das vollkommen egal. Will etwas anderes machen.
Wenn ich eine Web App will nutze ich Dinge wie React, Next, Node, Php usw.

Jetzt ist es aber so nur für Desktopanwendungen mit Oberfläche oder ohne das Java wahrscheinlich deutlich mehr Verwendung hat, beliebter ist => mehr jobs für mich, viele verschiedene bereiche , mehr Ressourcen zum lernen und auch plattformunabhängiger ist als c#.

Soweit ich weiss hatte microsoft versucht es nur auf windows zu beschränken.

Java ist nicht viel langsamer als C# so steht es zumindest im Internet.

Java wird in Bytecode übersetzt und C# in CLR. C++ dagegen wäre in Maschinencode und ist wenn man assembly zeug weglässt am performantesten.

Java oder Kotlin ist der Standart in der Android entwicklung (könnte man aber auch React Native nutzen und ich habe sowieso kein Android Smartphone)

Ausserdem gefällt mir auch nicht wem diese sprachen gehören microsoft und oracle. Das spielt keine grosse rolle für mich aber kann sich schlecht entwickeln

Ich hab da irgendwas auch mitbekommen das Oracle firmen probleme macht ich nehme an die Java Jdk kostenlos ist und eine SE kostet ? Hab ich nur mal gelesen weiss nicht ob es stimmt.

Mit c# könnte man theoretisch besser kleinere spiele machen aber das ist auch nichts für mich und wenn würde ich gleich c++ lernen.

App, IT, Java, C Sharp, Informatik, Programmiersprache, sdk, UI, GUI
Linux MX integrierter Bootloader?

Hallo zusammen,

ich möchte mir erneut Linux MX KDE installieren und nutzen. Mittlerweile kann ich ja Steam ebenfalls problemlos unter Linux nutzen so das ich von MS langsam weg möchte.

Ich habe MX auf mein alten Laptop genutzt und war super zufrieden. Mit Rufus installiert und Spaß gehabt.

Nun möchte ich MX erstmal auf meine zweite Platte auf meinem Mini-PC (Minisforum UM690) installieren und habe ein paar Fragen:

  1. Wenn ich mit Rufus ein Stick erstelle, dieser die Platte in ext4 formatiert und MX installiert, erkennt die Installationsdatei das Windoof installiert ist und erzeugt automatisch ein Bootmanager? Habe mal gelesen, dass man GNU Grub braucht?!
  2. Ich nutze unter Windows FAN Control, ergo ich kann meinen einzigen verbauten Lüfter individuell steuern und die Geschwindigkeit anpassen (Dieser ist von Haus aus ziemlich laut). Leider habe ich im Netz keine Linux Version gefunden. Gibt es eine GUI Version für Linux oder etwas ähnliches?
  3. Kann ich unter MX meine Win10 Pro Partitionen (exFAT) nutzen und verwalten, wenn ich diese unter Win frei gebe?
  4. Stimmt das, das Linux exFAT erkennt?
  5. Nutze Office365 (Berufsbedingt). Kann ich dies unter Linux weiter nutzen? Möchte nicht LibreOffice, komme mit Office ganz gut zurecht.

Vielen Dank für eure Hilfe,

Euer Sonic

Windows, Microsoft, Betriebssystem, Linux, Microsoft Office, gnulinux, KDE, Linux Mint, Grafische Oberfläche, Dateisystem, exfat, GUI, rufus, Windows 10, Office 365, Windows 10 Pro
(Python) .ts-, .pro-Dateien, QTranslator und Qt Linguist richtig verwenden?

Leider konnte mir nicht einmal ChatGPT helfen, da dieser Bot nur noch für Verwirrung gesorgt hat. Mal brauchte man eine gewisse Datei, mal nicht. Dann musste diese Datei mal dort und mal dort liegen. Auch das Recherchieren hat nicht viel gebracht.

Also, folgendes Problem:

Ich möchte QTranslator verwenden, um in meiner GUI-Anwendung, die ich mit dem Qt Designer gestalte, die ganzen Texte zu übersetzen.

Alle Texte von den ganzen beschrifteten Elementen usw. sollen in Deutsch und Englisch übersetzt werden können. Mit "lupdate -ts ..." habe ich die Quelldatei MainWindow.py analysieren lassen, um mir daraus passende .ts-Dateien erstellen zu lassen. Die MainWindow.py-Datei ist die konvertierte MainWindow.ui-Datei.

Das Ding ist nur, dass dann nicht weiter als

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="SPRACHE">
</TS>

in den .ts-Datein steht - ich weiß aber nicht, ob das falsch ist. Wenn ich aber diese Datei in Qt Linguist öffnen möchte, sagt der mir Die Übersetzungsdatei /lang/de_DE.ts ist leer und wird daher nicht geladen.

Hier ist der Baum meines Projektes, damit man mir außerdem besser weiterhelfen kann, welche Datei ich für die Übersetzung wo hinlegen soll:

In dieser de_DE.pro-Datei steht einfach nur

TEMPLATE = app
QT += core gui linguist
SOURCES += ../gui/MainWindow.py
TRANSLATIONS += translations/de_DE.ts translations/en_US.ts

drin und ich weiß immer noch nicht, ob die wirklich gebraucht wird.

Vielen Dank!

Bild zu Frage
programmieren, Python, GUI, Python 3, Pycharm
Powershell Problem mit System.Collections.ArraylList?

Hallo.

Ich habe ein Problem mit einer ArrayList.

Meine Funktion funtioneirt solange durch die Funktion mehrere Dateien gefunden werden, wenn aber nur eine Datei gefunden wird bekomme ich immer einen Fehler.

Das ist der Bereich in dem die ArrayList gefüllt wird (bzw. ein Auszug):

...
[System.Collections.ArrayList]$TableData = @(Get-ChildItem $FullDateFolders -Filter $filter -File -Recurse) |
                   where-object {($_.LastAccessTime -le (get-date).AddMinutes($DelTime)) -and ($_.Fullname -like $filter1)} |
                       ForEach-Object `
                           -Begin {$i=0} `
                           -Process {
                               $i++
                               $TextBox_Output.AppendText([System.Environment]::NewLine + "# Add: " + $_.FullName)    #TODO Nur für TEST
                               write-host "Datei-Nr.: $i -- " $_.Name                               #TODO Nur für TEST
                               $_CopyFullPath     = (($_.FullName -split '\\') | Select -Last 3) -join '\'
                               $_CopyFolder     = (($_.FullName -split '\\') | Select -Last 3 | Select -SkipLast 1) -join '\'
                               $_DisplayPath  = (($_.FullName -split '\\') | Select -Last 4) -join '\'
                               $_NumberOfParts = (Select-String -path $_ -pattern 'K0007').count
                               $_LastDir      = (Split-Path $_.Directory -Leaf)
$_
...
                           

Wichtiger ist wahrscheinlich die Fehlermeldung:

Der Wert "@{Maschine=50151; Name=schleifen.dfq; Teile=0; LastWriteTime=13.07.2022 18:57:52; DisplayPath=20220713_060501\MFU\50151\schleifen.dfq; 
CopyFullPath=MFU\50151\schleifen.dfq; CopyFolder=MFU\50151; FullName=E:\Powershell_Skripts\99-Ordner_Test\Source\20220713_060501\MFU\50151\schleifen.dfq}" kann nicht 
in den Typ "System.Collections.ArrayList" konvertiert werden. Fehler: "Der Wert "@{Maschine=50151; Name=schleifen.dfq; Teile=0; LastWriteTime=13.07.2022 18:57:52; 
DisplayPath=20220713_060501\MFU\50151\schleifen.dfq; CopyFullPath=MFU\50151\schleifen.dfq; CopyFolder=MFU\50151; 
FullName=E:\Powershell_Skripts\99-Ordner_Test\Source\20220713_060501\MFU\50151\schleifen.dfq}" vom Typ "Selected.System.IO.FileInfo" kann nicht in den Typ 
"System.Collections.ArrayList" konvertiert werden."

Kann mit dieser Fehlermeldung vielleicht jemand was Anfangen und mir einen Tip für die Fehlersuche geben?

Computer, Software, Windows, IT, programmieren, GUI, PowerShell
In einem TextField die Zahlen nebeneinander anordnen (Java)?

Guten Tag,

ich programmiere gerade einen kleinen Taschenrechner. Dort kann man (natürlich) Zahlen und Operatoren eingeben. Das funktioniert auch schon prima, doch werden in dem TextField, in welches die ausgewählten Zahlen und Operatoren geschrieben werden, diese nicht nebeneinander, sondern übereinander geschrieben.

Meine Frage ist jetzt, wie man programmiert, dass die nebeneinander geschrieben werden. Dazu ein kleiner Auszug aus meinem Code:

JFrame fenster = new JFrame("Taschenrechner");
JTextField textErgebnis = new JTextField();
GridBagConstraints c = new GridBagConstraints();

JButton sieben = new JButton("7");
JButton acht = new JButton("8");

[...]

c.gridx = 0;
c.gridy = 1;
c.gridwidth = 1;
fenster.getContentPane().add(sieben, c);
  
c.gridx = 1;
c.gridy = 1;
c.gridwidth = 1;
fenster.getContentPane().add(acht, c);

[...]

sieben.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Integer i = 7;
textErgebnis.setText(i.toString());            
            }
        });
acht.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Integer i = 8;
textErgebnis.setText(i.toString());            
            }
        });
[...]

(Wenn jetzt der Button "7" und danach "8" gedrückt wird, stehen die beiden Zahlen übereinander)

Vielen Dank schon mal im voraus!

Computer, programmieren, Java, Informatik, GUI
Wie kann Java auf ein User-Input warten?

Guten Tag,

ich programmiere gerade ein kleines Java-Projekt.

Dort hat bis jetzt auch alles geklappt, doch nun weiß ich nicht mehr weiter.

Ich habe für den Start meines Programms dieses GUI erzeugt:

Wie da ja schon steht, soll der User 'W' drücken, damit das Spiel anfängt. Doch ich weiß nicht, wie ich das programmieren kann. Ich habe schon eine Klasse (KeyHandler) angelegt, die KeyListener implementiert und die ich schon meinem Programm hinzugefügt habe, doch passieren tut dabei nichts.

Ich habe auch schon eine Ahnung warum: Die Variable 'commands.isRunning' wird direkt überprüft (und danach nicht mehr) und deshalb der If-Teil überschprungen. Wie kann jetzt Java auf einen User-Input warten, damit die Variable nicht sofort überprüft wird?

Hier ist meine Draw Klasse:

(commands.isRunning ist gerade noch false, soll aber durch das 'W' true werden. Die Methode, die dadurch aufgerufen werden soll, steht in der Klasse Commands)

public class Draw extends JPanel implements Variables {

    Commands commands = new Commands();
    KeyHandler keyHandler = new KeyHandler();

    Player player = new Player();
    Donut donut = new Donut();

    Draw() {
        this.addKeyListener(keyHandler);
        this.setPreferredSize(new Dimension(SCREEN_WIDTH, SCREEN_HEIGHT));
        this.setBackground(Color.black);
        this.setFocusable(true);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        commands.printStartText(g);
        
        if (commands.isRunning() == true) {

            // Draw Grid
            for (int i = 0; i < SCREEN_HEIGHT / UNIT_SIZE; i++) {
                g.drawLine(i * UNIT_SIZE, 0, i * UNIT_SIZE, SCREEN_HEIGHT);
                g.drawLine(0, i * UNIT_SIZE, SCREEN_HEIGHT, i * UNIT_SIZE);
            }

            // Place Player
            player.placePlayer(g);

            // Place Donut
            donut.placeDonut(g);

            // Place Barrier

            // Place Gadget

            // Set Default Color
            g.setColor(Color.darkGray);

        }
    }
}

Und hier die KeyHandler Klasse:

public class KeyHandler implements KeyListener {

    Commands commands = new Commands();

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void keyPressed(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_W:
            commands.startGame();
            break;

        case KeyEvent.VK_A:

            break;
        case KeyEvent.VK_S:

            break;
        case KeyEvent.VK_D:

            break;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub

    }
}

Auch habe ich schon 'System.in.read' hinter 'commands.printStartText(g);' platziert, doch da wurde dann nur ein weißes Bild angezeigt.

Ich hoffe ihr könnt mir helfen!

Schon mal vielen Dank im voraus.

Bild zu Frage
Computer, Technik, programmieren, Java, Informatik, GUI
JavaFX TableView mit Daten aus der Datenbank füllen?

Hey Leute,

ich versuche gerade meine Tabelle mit Daten aus der Datenbank zu füllen aber dabei bekomme ich eine Fehlermeldung. Kann mir jemand dabei helfen?

Users Klasse:

public class Users {
    private int id;
    private String userToken;
    private String firstname;
    private String lastname;
    private String emailAddress;
    private String creationTime;
    private Button deleteButton;

    public Users(int id, String userToken, String firstName, String lastName, String emailAddress, String creationTime) {
        this.id = id;
        this.userToken = userToken;
        this.firstname = firstName;
        this.lastname = lastName;
        this.emailAddress = emailAddress;
        this.creationTime = creationTime;
    }
}

Die Fehlermeldung:

UserController:

public class UserController {

    @FXML
    private TableColumn<Users, Integer> idCol;

    @FXML
    private TableColumn<Users, String> creationTimeCol;

    @FXML
    private TableColumn<Users, String> emailCol;

    @FXML
    private TableColumn<Users, String> firstnameCol;

    @FXML
    private TableColumn<Users, String> lastnameCol;

    @FXML
    private TableColumn<Users, String> deleteCol;

    @FXML
    private TableColumn<Users, String> userTokenCol;

    @FXML
    private TableView<Users> table;

    @FXML
    private TextField textField;

    public void printUser() {
        ObservableList<Users> allUserList = FXCollections.observableArrayList();

        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:2020/database", "root", "");
            System.out.println("Connected");
            //PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM usertable");
            ResultSet resultSet = connection.createStatement().executeQuery("SELECT * FROM usertable");
            while (resultSet.next())  {
                allUserList.add(new Users(Integer.parseInt(resultSet.getString("id")),
                        resultSet.getString("userToken"), resultSet.getString("firstName"),
                        resultSet.getString("lastName"), resultSet.getString("emailAddress"),
                        resultSet.getString("creationTime")));

            }

        } catch (SQLException ignored) {
            ignored.printStackTrace();
        }
        idCol.setCellValueFactory(new PropertyValueFactory<Users, Integer>("id"));
        userTokenCol.setCellValueFactory(new PropertyValueFactory<Users, String>("userToken"));
        firstnameCol.setCellValueFactory(new PropertyValueFactory<Users, String>("firstName"));
        lastnameCol.setCellValueFactory(new PropertyValueFactory<Users, String>("lastName"));
        emailCol.setCellValueFactory(new PropertyValueFactory<Users, String>("emailAddress"));
        creationTimeCol.setCellValueFactory(new PropertyValueFactory<Users, String>("creationTime"));
        table.setItems(allUserList);
        System.out.println("all user got");
    }
}

Bild zu Frage
Computer, programmieren, Java, Datenbank, JavaFX, MySQL, GUI
JavaFX Button auf Controller Funktion zeigen?

Ich will einen Taschenrechner programmieren. Backend logik ist soweit vorhanden, fehlt nur das GUI

Ich dachte mir, dass ich eine Klasse mache, wo ich das GridPane extende und im Konstruktor die buttons adde.

So sieht das etwa aus:

public class FXPane extends GridPane {
    private String[][] buttonTexts = {
            {"7", "8", "9", "(", ")", "BS"},
            {"4", "5", "6", "+", "-", "CE"},
            {"1", "2", "3", "*", "/", "C"},
            {"±", "0", ",", "x^y", "1/x", "="}
    };

    FXPane() {
        for(int y = 0; y < buttonTexts.length;y++){
            for(int x = 0; x<buttonTexts[0].length;x++){
                Button theButtonToAdd = new Button(buttonTexts[y][x]);
                theButtonToAdd.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
                this.add(theButtonToAdd,x,y);
            }
        }
    }
}

Der Controller sieht so aus:

public class Controller {
    @FXML
    private Label fxDisplay;
    @FXML
    private GridPane fxGrid;

    private FXPane buttonPane = new FXPane();

    // called by the FXML loader after the labels declared above are injected:
    public void initialize() {
        fxDisplay.setText("asd");
        fxGrid.add(buttonPane,0,0);
    }
}

Die Namen und der Hack über 2 Gridpanes änder ich noch, geht aber derzeit eher POC, da es das erste mal mit JavaFX ist.

Mein Plan ist, dass die Buttons auf eine Funktion aus dem Controller zeigt bzw aufruft.

Nur ist das vermutlich nicht (schön) möglich. Gibts ne bessere Variante oder ist das der einzige Weg?

Der Plan war, dass der Controller die Taschenrechner Instanz besitzt und jeder Button dann die eingabe an die Taschenrechner Instanz gibt. Nur brauche ich dafür halt noch ein übersetzer, damit der jeweilige Button die jeweilige Eingabe in den Taschenrechner gibt.

Ich könnte natürlich die Controller Instanz per this dem Konstruktor übergeben und dann in FXPane speichern. Nur ist das gut?

Computer, Technik, programmieren, Java, JavaFX, Technologie, GUI
Spigot 1.16.5 Gui funzt einfach nicht was tun?

Hey ich habe dieses gui für mein plugin geschrieben an sich funktioniert der inventory teil aber das if statement will einfach nicht ich habe mehrere guis im plugin die genau gleich aufgebaut sind(den code auch schon einmal kopiert und in anderer funktion benutzt wo es ohne probleme fuktioniert hat. Es gibt keine Errors es öffnet sich einfach nicht.


	@SuppressWarnings("unlikely-arg-type")
	public void onClickKit(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		try {
			if (p.getInventory().getItemInMainHand().equals(Material.CHEST)) {
					Inventory Stats = Bukkit.createInventory(null, InventoryType.DISPENSER, "§9§lKits");
					(new Methods()).setPlaceholder(Stats);
					ItemStack Item1 = new ItemStack(Material.SANDSTONE, 32);
					ItemMeta meta1 = Item1.getItemMeta();
					meta1.setDisplayName("§8➟ §6Sandstone");
					List<String> lore1 = new ArrayList<String>();
					lore1.add("You can run, but you can't hide...");
					meta1.setLore(lore1);
					Item1.setItemMeta(meta1);


					ItemStack Item2 = new ItemStack(Material.BOW, 1);
					ItemMeta meta2 = Item2.getItemMeta();
					meta2.setDisplayName("§8➟ §2Sniper");
					List<String> lore2 = new ArrayList<String>();
					lore2.add("");
					meta2.setLore(lore2);
					meta2.addEnchant(Enchantment.ARROW_KNOCKBACK, 2, true);
					Item2.setItemMeta(meta2);


					ItemStack Item3 = new ItemStack(Material.SNOWBALL);
					ItemMeta meta3 = Item3.getItemMeta();
					meta3.setDisplayName("§8➟ §fSnowman");
					List<String> lore3 = new ArrayList<String>();
					lore3.add("§3Keep your Enemies on Distance.");
					meta3.setLore(lore3);
					Item3.setItemMeta(meta3);


					Stats.setItem(0, Item1);
					Stats.setItem(4, Item2);
					Stats.setItem(8, Item3);
					p.openInventory(Stats);
					p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_BELL, 2.0F, 1.0F);
				}
		} catch (Exception exception) {


		}
	}

LG

Computer, programmieren, Java, Minecraft, Minecraft Server, GUI, Spigot, Minecraft Plugin
GUI-Komponente in separate Klassen auslagern?

Hallo zusammen,

ich habe eine GUI programmiert. Leider ist der Code ziemlich unübersichtlich. Deswegen dachte ich, ich lagere die Erstellung der Komponenten aus. Nur leider verschwinden dann die ausgelagerten Komponenten aus der GUI.

Beispiel:

Erste Klasse:

package Verknüpfung;

import java.awt.BorderLayout;

public class Teil1 extends JFrame {
  private JPanel contentPane;

  static int f;

  /*
   * Launch the application.
   */
  public static void main(String[] args) {
    Teil2 blubb = new Teil2();
    Teil2.textfeld();

    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          Teil1 frame = new Teil1();
          frame.setVisible(true);
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }

  /*
   * Create the frame.
   */
  public Teil1() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JLabel lbl1 = new JLabel("Test");
    lbl1.setBounds(45, 68, 69, 20);
    contentPane.add(lbl1);

    JLabel lbl2 = new JLabel("Test");
    lbl2.setBounds(45, 151, 69, 20);
    contentPane.add(lbl2);
  
    JButton btnNewButton = new JButton("New button");
    btnNewButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        int i;
        i = 5;
        f = i + 6;
      }
    });
    btnNewButton.setBounds(209, 199, 115, 29);
    contentPane.add(btnNewButton);
  }
}

Zweite Klasse:

package Verknüpfung;

import java.awt.BorderLayout;

public class Teil2 extends JFrame {
  private JPanel contentPane;

  private JTextField txt1;

  private JTextField txt2;

  /*
   * Launch the application.
   */
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          Teil2 frame = new Teil2();
          frame.setVisible(true);
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }
                                                                                                  
  /*
   * Create the frame.
   */
  public Teil2() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    txt1 = new JTextField();
    txt1.setBounds(267, 74, 146, 26);
    contentPane.add(txt1);
    txt1.setColumns(10);
    
    txt2 = new JTextField();
    txt2.setBounds(267, 149, 146, 26);
    contentPane.add(txt2);
    txt2.setColumns(10);
    txt2.setText("Hi");
  }

  public static void textfeld() {
  }                                                                               }

programmieren, Java, Oberfläche, GUI

Meistgelesene Fragen zum Thema GUI