====== Practics ======
===== GUI =====
==== Frame ====
Автономное приложение может создавать окно класса Frame, окно снабжается заголовком и может содержать меню. Для рисования в окне доступны все классы и методы библиотеки **AWT**, обычно применяемые апплетами\\
Для использования определяем новый класс наследуя от "Frame" и переопределяем конструктор, paint(), handlerEvent() и т.д.\\
:!: Пример
package simFrame;
import java.awt.*;
public class SimpleFrame {
public static void main(String args[]){
FrameWindow my_frame;
my_frame = new FrameWindow("My Frame Window");
my_frame.show();
}
}
class FrameWindow extends Frame{
public FrameWindow(String szTitle){
super(szTitle);
resize(200, 90);
setBackground(Color.magenta);
setForeground(Color.black);
}
public void paint(Graphics g){
g.setFont(new Font("Helvetica", Font.PLAIN, 12));
g.drawString("Text in frame", 10, 50);
super.paint(g);
}
public boolean handleEvent(Event evt){
if(evt.id == Event.WINDOW_DESTROY){
setVisible(false);
System.exit(0);
return true;
}
else
return super.handleEvent(evt);
}
}
===== Types =====
==== Integer ====
**parseInt()** и **valueOf()** аналоги но первый возвращает **int а второй Integer**\\
:!: Пример
===== Build =====
==== Manifest ====
:!: Manifest
Manifest-Version: 1.0
Main-Class: com.gmware.applications.app.application.applicationMain
Module-Name: app
Module-Version: app.18.0.51079-34-gbefd25d8
Module-Commit-Date: 2023-02-22 06:14:30 +0000
Created-By: 17.0.5
Class-Path: profiles-app.18.0.51079.jar p_app-app.18.0.51079.jar pl
c_evaluation-app.18.0.51079.jar pc_evaluation-app.18.0.51079.jar pr
files-base-app.18.0.51079.jar
:!: Gradle скрипт
plugins {
id("application")
id("maven-publish")
id("com.github.johnrengelman.shadow")
}
group = "com.gmware.applications"
version = "1.0.2-SNAPSHOT"
dependencies {
implementation(projects.utils)
implementation(projects.tools)
implementation(projects.common)
implementation(projects.appcommon)
implementation(projects.db)
implementation(projects.gameinfo)
implementation(projects.commonholdem)
implementation(projects.metrics)
implementation("uk.org.lidalia:sysout-over-slf4j:1.0.2")
implementation(Deps.toml)
}
fun getGitCommit(): String {
val result = StringBuilder()
val process = ProcessBuilder("git", "rev-parse", "HEAD").start()
process.inputStream.reader(Charsets.UTF_8).use {
result.append(it.readText())
}
process.waitFor()
return result.toString().trim()
}
tasks {
"shadowJar"(com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar::class) {
from("${rootProject.rootDir}/resources/builds/logback/") {
include("logback-logs-json.xml")
rename("logback-logs-json.xml", "logback.xml")
}
application {
this.mainClass.set("com.gmware.applications.externalservices.profilesacceleration.ProfileAcceleration")
}
this.isZip64 = true
archiveClassifier.set("")
archiveFileName.set("ProfileAcceleration.jar")
manifest.attributes["Module-Version"] = getGitCommit()
}
}
publishing {
repositories {
maven {
url = uri("${properties["nexusUrl"]}/profile-snapshots")
credentials {
username = "${properties["nexusUser"]}"
password = "${properties["nexusPassword"]}"
}
}
}
publications {
register("mavenJava", MavenPublication::class) {
artifact(tasks["shadowJar"])
}
}
}
==== ====
:!: Пример