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
Code: Select all
import de.gombers.common.reflection.Tools; @SpringBootApplication @MapperScan(basePackages = "de.gombers.myhome.common.awattar.dbaccess, de.gombers.myhome.common.lng.dbaccess") @ComponentScan({"de.gombers"}) public class SampleGuiMain { @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-Klasse
Code: Select all
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 public class SampleMainGuiRunner implements CommandLineRunner { @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); } } } - JFrame und JPanel in ein JTabbedPane umwandeln
Code: Select all
package 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 public class SampleMainGuiFrame extends JFrame{ @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 löst eine Ausnahme nach Zweck aus
Code: Select all
package 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 public class SampleMainGuiPane extends JPanel { @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