Ich verwende Java Runtime V23, kompiliert als Java 21 auf Quellebene mit JDK 23 und Spring Boot 3.4.0. Protokollierung mit Logback. „application.properties“ setzt „logging.level.root=TRACE“
Beim Öffnen des Projekts mit Intellij heißt es, dass meine „main“-Aufrufe nicht ausführbar sind. Obwohl es, wie gesagt, beim Aufruf über die Konsole ausgeführt wird, wurde es einfach nach einer einfachen Aufgabe gefragt. Habe eine erstellt:
- Hauptklasse
import de.gombers.common.reflection.Tools;
@SpringBootApplication
@MapperScan(basePackages = "de.gombers.myhome.common.awattar.dbaccess, de.gombers.myhome.common.lng.dbaccess")
@ComponentScan({"de.gombers"})
öffentliche Klasse SampleGuiMain {Code: Select all
@SuppressWarnings("unused") private static final Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName()); private static final String[] request = new String[] { "SampleGuiMainRunner" }; public static void main(String[] args) { ApplicationContext contexto = new SpringApplicationBuilder(SampleGuiMain.class) .web(WebApplicationType.NONE) .headless(false) .run(request); } - Command Runner Class
package de.gombers.myhome.mygui;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import de.gombers.common.reflection.Tools;
@Component
öffentliche Klasse SampleMainGuiRunner implementiert CommandLineRunner {Code: Select all
@SuppressWarnings("unused") private final static Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName()); @Autowired private final SampleMainGuiFrame mainFrame; @Autowired public SampleMainGuiRunner(final SampleMainGuiFrame mainFrame) { this.mainFrame=mainFrame; } @Override public void run(String... args) throws Exception { if (!args[0].equals("SampleGuiMainRunner")) { LOGGER.debug("Nothing requested"); return; } try { mainFrame.process(); } catch (Exception e) { LOGGER.error("", e); } } - Swing JFrame fügt JPane zu einem TabbedPane hinzu
Paket de.gombers.myhome.mygui;
import java.awt.BorderLayout;
import java.util.concurrent.ExecutorService;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import de.gombers.common.properties.MyComponentListener;
import de.gombers.common.reflection.Tools;
import de.gombers.myhome.common.environment.GuiProperties;
import de.gombers.myhome.mygui.environment.MyHomeGuiProperties;
import de.gombers.myhome.mygui.lng.LngConsumptionPane;
@Component
öffentliche Klasse SampleMainGuiFrame erweitert JFrame{Code: Select all
@SuppressWarnings("unused") private final static Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName()); @Autowired private final SampleMainGuiPane myPane; private JTextField messageBox; protected final JTabbedPane tabbedPanes = new JTabbedPane(); @Autowired public SampleMainGuiFrame(final SampleMainGuiPane myPane) { super("MySample"); this.myPane=myPane; } public void process() { this.messageBox = new JTextField(); this.messageBox.setEditable(false); tabbedPanes.addTab("Sample", null, myPane, "my sample"); this.getContentPane().add(tabbedPanes, BorderLayout.CENTER); this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); String panelId=this.getClass().getSimpleName(); this.setVisible(true); } - Der JPane wirft eine Ausnahme nach Zweck
Paket de.gombers.myhome.mygui;
import java.awt.Color;
import java.text.DecimalFormat;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.brunchboy.util.swing.relativelayout.RelativeLayout;
import com.brunchboy.util.swing.relativelayout.RelativeLayoutHelper;
import de.gombers.common.reflection.Tools;
import de.gombers.myhome.common.dataprovider.lambda.COPLambdaCalculator;
import de.gombers.myhome.common.dataprovider.lambda.COPNibeCalculator;
import de.gombers.myhome.common.dataprovider.lambda.COPSuperCalculator;
import de.gombers.myhome.common.dataprovider.lambda.COPViessmanCalculator;
import de.gombers.myhome.common.environment.GuiProperties;
import de.gombers.myhome.lng.common.bindings.dto.AIOTEResultsMeterData;
import de.gombers.myhome.mygui.environment.MyHomeGuiProperties;
@Component
öffentliche Klasse SampleMainGuiPane erweitert JPanel {}Code: Select all
@SuppressWarnings("unused") private final static Logger LOGGER = LoggerFactory.getLogger(Tools.getClassName()); private int top=10, left=10; private int colWidth = 50; private final JTextField messageBox; @Autowired public SampleMainGuiPane() throws Exception { LOGGER.info("Have been invoked"); this.messageBox = new JTextField(); messageBox.setForeground(Color.BLACK); throw new Exception("by purpose thrown"); }
Mobile version