Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tie/ohj2/ve/2025/kevat/ohj2
  • hasemajo/ohj2
  • nikaleko/ohj2
  • tntvanha/ohj2
  • lemaline/ohj2
  • rintahe/ohj2
  • tersaton/ohj2
  • tornhale/ohj2
  • pjyypiix/ohj-2
  • aneejoko/ohj2
  • reponaw/ohj2
  • saarian/ohj2
  • niemimm/ohj2
  • jppaasww/ohj2-2025k
  • ssniinim/ohj2
  • niememan/ohj2
  • milimaas/ohj2
  • kallmovu/ohj2
  • adaoliro/ohj2
  • tojuhann/ohj2
  • vevejuha/ohj2
  • mieikrla/ohj2
  • miankort/ohj2
  • saeteppo/ohj2
  • saelripa/ohj2
  • saniitty/ohj2
  • nsmietyt/ohj2
  • mikkolto/ohj2
  • mmuhonen/ohj2k25
  • saukkota/ohj-2-ht
  • eenorta/ohj2
  • oapaaso/ht-2
  • eeeeoino/ohj2
  • hietmaem/ohj2
  • vvlaspa/ohj2ht
  • lalaajal/ohj2
  • pepartyy/ohj2
  • loukovjv/ohj2
  • vihtkaan/ohj2
  • annelinu/ohjelmointi2
  • lehtikmi/ohj2
  • ihakalel/ohj2
  • aichinos/ohj2
  • lahteela/ohj-2-ht
  • pellrata/ohj2
  • iljinisa/ohj2
  • nkeuren/ohj2
  • hiltunma/ohj2
  • esshelkr/ohj2
  • vianelo/ohj2
  • kousaepw/ohj-2-ht
  • amheikkz/ohj2
  • jatirkko/ohj2
  • akharine/ohj2
  • rlokilja/ohj2
  • eskrliim/ohj2
  • masakoiv/ohj2
  • toivjope/ohj2
  • sasalons/ohj2
  • hirvepjw/ohj2
  • lajoveps/vuororekisteri
  • lelitirr/ohj-225
  • juhsansa/ohj2
  • essmarpe/ohj2
  • lehtlrvt/ohj2
  • setilus/ohj2
  • julipits/ohj2
  • kivistve/ohj2
  • erpajala/ohj2
  • pslohi/ohj2
  • sediiv/ohj2
  • jovesaar/ohj2
  • jutaalko/ohj2
  • valltoha/ohj2
  • ruotvive/ohj2ht
  • kkvalke/ohj2
  • aetuukka/espanjakohderekisteri
  • pdanilei/ohj2ht
  • lahtlule/ohj2
  • jaemvahu/ohj2
  • kantsiii/ohj2
  • tototuru/ohj2
  • elmotabe/ohj2
  • sutinele/ohj2
  • vepajuna/ohj2
  • tornittu/reseptilista
  • sasoleht/ohj2
  • eemjorto/ohj2
  • gagolzar/ohj2
  • sievanee/ohj2
  • nobekail/ohj2
  • mamiparv/ohj2
  • halolpvz/ohj2
  • tukilo/ohj2
  • mmleppis/ohj2
  • tmruisma/ohj2
  • aajataip/ohj-2
  • salonevs/ohj-2
  • ygulusen/ohj2
  • saarakka/ohj2
  • eakoskix/ohj2
  • lamminm/ohj2ht
  • sellmmv/salibandynpelaajarekisteri
  • tuoskopp/ohj2
  • haarates/ohj-2
  • jormlsuu/ohj2
  • lihiauka/ohj2
  • eeemkarv/ohj2
  • uekolehm/ohj2
  • smkolari/ohj-2-a
  • spicjrxz/ohj2
  • maalvirt/ohj-2-ht
  • hietaolo/ohj2ht
  • rtmatilt/ohj2
  • veevjoen/ohj2
  • lainejee/ohj2
  • pohtojoj/tuotelistaaja
  • jokayli/ohj2
  • sulasaal/ohj2
  • kalloupe/ohj2
  • apeshhhh/ohj2
  • kopperp/ohj2
  • garammtu/ohj2
  • ettalaes/ohj2
  • rajanije/ohj2
  • timovaan/ohj2
  • mkvuonos/ohj2
  • tuomiluu/ohj2
  • konttijm/ohj2
  • palolala/ohj2
  • vejokauk/ohj2
  • peihanus/ohj2
  • itsario/ohj2
  • hejumivu/ohj2
  • isojarto/ohj2
  • pirinpot/ohj2ht
  • oihietan/ohj2
  • niemhizz/ohj2
  • oparve/ohj2
  • truhtejo/ohj-2-ht
  • malineps/ohj-2-pelivalikoima
  • kylkii/ohj2
  • emigrank/ohj2
  • samavakk/ohj2
  • lausofla/ohj2
  • arossors/ohj-2-2
  • nurmsajo/ohj2
  • mattarma/ohj2
  • akjuhesa/ohj-2-ht
  • ovevalka/ohj2
  • lequyanh/ohj-2-ht
  • jasyvays/ohj2
  • lindtope/ohj2
  • kaipainm/ohj2
  • peillips/ohj2
  • miwamich/ohj2
  • anpahypp/ohj2harkka
  • kreenk/ohj2
  • iiaumaoi/ohj2
  • jmsutizy/ohj-2-25
  • conrcsir/ohj2
  • palaakho/ht-metsastyspaivakirja
  • makelkjt/ohj2
  • jooantni/ohj2
  • ttkelaw/ohj-2-2025-k
  • koivishe/kuntohalli-oy
  • laleiho/harjoitustyo-ohj-2
  • joolmatt/ohj2-ht
  • akrasa/ohj2
  • rikretel/ohj-2-ht
  • vuorelma/ohj2
171 results
Show changes
Commits on Source (87)
Showing
with 469 additions and 1 deletion
......@@ -71,4 +71,4 @@ nb-configuration.xml
##############################
## OS X
##############################
.DS_Store
\ No newline at end of file
.DS_Store
### IntelliJ IDEA ###
out/
SearchableObject/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
File added
DynamicComboBox/kuvat/Import.png

44.8 KiB

DynamicComboBox/kuvat/LaatikkoKoodissa.png

65.5 KiB

DynamicComboBox/kuvat/LaatikkoSB.png

208 KiB

DynamicComboBox/kuvat/LaatikkoValinta.png

103 KiB

DynamicComboBox/kuvat/esimerkki.png

6.15 KiB

DynamicComboBox/kuvat/filterointiEsimerkki.png

4.22 KiB

<?xml version="1.0" encoding="UTF-8"?>
<?import DynamicComboBox.DynamicComboBox?>
<?import javafx.collections.FXCollections?>
<?import java.lang.String?>
<DynamicComboBox xmlns="http://javafx.com/javafx/21"
xmlns:fx="http://javafx.com/fxml/1"
fx:id="dynamicComboBox">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Item 1"/>
<String fx:value="Item 2"/>
<String fx:value="Item 3"/>
</FXCollections>
</items>
</DynamicComboBox>
\ No newline at end of file
package DynamicComboBox;
import javafx.beans.property.ListProperty;
import javafx.beans.property.SimpleListProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.input.KeyEvent;
import java.util.*;
/**
* Oma versio ComboBox containerista, sisältää haun ja uuden lisäyksen tulkinnan
*/
public class DynamicComboBox extends ComboBox<java.lang.String> {
private final ListProperty<String> sisalto = new SimpleListProperty<>(FXCollections.observableArrayList());
/**
* Attribuutti sisalto sisältää kaiken comboxin sisällön ja toimii myös scenebuilderin kanssa yhteensopivana
*/
public DynamicComboBox() {
super();
this.getEditor().addEventHandler(KeyEvent.KEY_TYPED, this::haku);
this.getEditor().setOnAction(_ -> tutkiValinta());
this.sisalto.addListener((_, _, newValue) ->asetaSisalto(newValue) );
}
/**
* Seuraavat metodit ovat molemmat sisallon lisäämistä/asettamsita varten
*
* @param sisalto mikä merkkijono/sisalto kokoelma comboboxiin laitetaan
*/
public void asetaSisalto(String[] sisalto) {
this.getItems().setAll(sisalto);
this.sisalto.setAll(Arrays.asList(sisalto));
}
public void asetaSisalto(List<String> sisalto) {
this.getItems().setAll(sisalto);
this.sisalto.setAll(sisalto);
}
@FXML
public void asetaSisalto(ObservableList<String> sisalto) {
this.getItems().setAll(sisalto);
this.sisalto.set(sisalto);
}
@FXML
public ListProperty<String> sisaltoProperty() {
return sisalto;
}
@FXML
public ObservableList<String> getSisalto() {
return sisalto.get();
}
/**
* lisää sisältöä comboboxiin
*
* @param uusi merkkijono, joka lisätään
*/
public void lisaaSisaltoa(String uusi) {
this.getItems().add(uusi);
this.sisalto.add(uusi);
}
/**
* Vallinan tutkimis metodi Tutkii mitä käyttäjä on sijoittanut ComboBoxiin, jos on uusi valinta,
* niin kysytään halutaanko se lisätä valintoihin. Instanssi pohjainen lisäys, jos lisäys halutaan
* lopulliseksi tulee se tehdä itse
*/
private void tutkiValinta() {
java.lang.String valinta = this.getEditor().getText();
if (valinta == null) {
return;
}
valinta = valinta.trim();
if (valinta.isEmpty()) {
return;
}
// katsotaan löytyykö valinta
boolean loytyko = false;
for (String item : sisalto) {
if (valinta.equals(item)) {
loytyko = true;
break;
}
}
//jos ei löytynyt, niin avataan dialogi ja kysytään halutaanko valinta lisätä
if (!loytyko) {
tallennusIkkuna(valinta);
} else {
this.getEditor().requestFocus();
}
}
/**
private void sisaltoMuunnin(List<java.lang.String> items) {
if(!sisalto.isEmpty() && sisalto.getFirst() instanceof SearchableObject){
for (String item : sisalto) {
SearchableObject h = (SearchableObject) item;
items.add(h.getSearchableValue());
}
} else if (sisalto.isEmpty() && sisalto.getFirst() instanceof java.lang.String) {
for (String item : sisalto) {
java.lang.String h = (java.lang.String) item;
items.add(h);
}
}
}
*/
/**
* Metodi comboboxista etsimistä varten, Algoritmi toimii vertaamalla käyttäjän tekstiä
* items listan sisältöihin ja lisää ne comboxiin, mitkä vastaavat hakusanaa.
* Jos haku tyhjä, niin laitetaan kaikki comboboxiin, tulostetaan ja poistutaan.
* Aikavaativuus kasvaa lineaarisesti, items listan kasvaessa
*/
private void haku(KeyEvent k) {
//estetään hakeminen, jos painettu enter-nappia
if (k.getCharacter().equals("\r")) {
tutkiValinta();
return;
}
java.lang.String hakuSana = this.getEditor().getText() + k.getCharacter();
hakuSana = hakuSana.trim();
//varmistetaan, että hakusana ei ole tyhjä, jos on niin näytetään kaikki vaihtoehdot
if (hakuSana.isEmpty()) {
this.getItems().setAll(sisalto);
this.show();
return;
}
//käydään läpi jokainen vaihtoehto ja näytetään vain ne jotka ovat yhteensopivia
List<java.lang.String> naytettavat = new ArrayList<>();
for (java.lang.String item : sisalto) {
if (item.startsWith(hakuSana)) {
naytettavat.add(item);
}
}
this.getItems().setAll(naytettavat);
}
/**
* Tallennusikkunan esittävä metodi
*
* @param valinta valinta joka tallennetaan
*/
private void tallennusIkkuna(java.lang.String valinta) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Valitse");
alert.setHeaderText(null);
alert.setContentText("Haluatko tallentaa valinnan " + valinta + "?");
ButtonType buttonTypeYes = new ButtonType("Kyllä", ButtonBar.ButtonData.OK_DONE);
ButtonType buttonTypeCancel = new ButtonType("Ei", ButtonBar.ButtonData.CANCEL_CLOSE);
alert.getButtonTypes().setAll(buttonTypeYes, buttonTypeCancel);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == buttonTypeYes) {
sisalto.add(valinta);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>LisaaReissuGUIController.java</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry exported="true" kind="lib" path="C:/kurssit/jar/fxgui.jar"/>
<classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="lib" path="C:/kurssit/jar/DynamicComboBox.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Ohj2HT</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<component inheritJdk="true">
<contentEntry url="file://$MODULE_DIR$"/>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="ASCII"?>
<anttasks:AntTask xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:anttasks="http://org.eclipse.fx.ide.jdt/1.0" buildDirectory="${project}/build">
<deploy>
<application name="Ohj2HT"/>
<info/>
</deploy>
<signjar/>
</anttasks:AntTask>
package Luokat;
import java.util.HashMap;
import java.util.List;
public class KokoTulkki {
private final HashMap<Integer, String> koot = new HashMap<>();
public KokoTulkki() {
koot.put(1,"Sintti");
koot.put(2,"Keskikokoinen");
koot.put(3,"Iso");
}
/**
*
* @param id Id, jonka kokoa etsitään
* @return koko merkkijonona
* @example
* <pre name="test">
* KokoTulkki k = new KokoTulkki();
* k.getKokoFromId(1) === "Sintti";
* k.getKokoFromId(3) === "Iso";
* k.getKokoFromId(5000) === null;
* </pre>
*/
public String getKokoFromId(int id){
return koot.get(id);
}
/**
*
* @param koko minkä koon Id:tä etsitään
* @return Id:n kokonaislukuna
* @example
* <pre name="test">
* KokoTulkki k = new KokoTulkki();
* k.getIdFromKoko("Iso") === 3;
* k.getIdFromKoko("Sintti") === 1;
* k.getIdFromKoko("pöofkeof") === -1;
*
* </pre>
*/
public int getIdFromKoko(String koko){
List<Integer> idt = koot.keySet().stream().toList();
for(Integer i : idt){
if(koko.equals(koot.get(i))){
return i;
}
}
return -1;
}
public static void main(String[] args) {
KokoTulkki k = new KokoTulkki();
System.out.println(k.getKokoFromId(1));
String s = "Sintti";
System.out.println(k.getIdFromKoko(s));
}
}
package Luokat;
import java.util.HashMap;
import java.util.List;
public class LajiTulkki {
private HashMap<Integer,String> lajit = new HashMap<>();
public LajiTulkki(){
lajit.put(1,"ahven");
lajit.put(2,"kuha");
}
/**
*
* @param id mistä id:stä etsitään
* @return lajin nimen merkkijonona
* @example
* <pre name="test">
* LajiTulkki l = new LajiTulkki();
* l.getLajiFromId(1) === "ahven";
* l.getLajiFromId(2) === "kuha";
* </pre>
*/
public String getLajiFromId(int id){
return lajit.get(id);
}
/**
*
* @param laji laji jonka Id:tä etsitään
* @return palauttaa lajin id:n kokonaislukuna
* @example
* <pre name="test">
* LajiTulkki l = new LajiTulkki();
* l.getIdFromLaji("kuha") === 2;
* l.getIdFromLaji("ahven") === 1;
* l.getIdFromLaji("wmfwfow") === -1;
* </pre>
*/
public int getIdFromLaji(String laji){
List<Integer> idt = lajit.keySet().stream().toList();
for(Integer i : idt){
if(lajit.get(i).equals(laji)){
return i;
}
}
return -1;
}
}
package Luokat;
public class Reissu {
private String Pvm;
public int reissunTag;
private String sijainti;
private String keli;
public Reissu(int reissunTag, String Pvm, String sijainti, String keli) {
this.Pvm = Pvm;
this.reissunTag = reissunTag;
this.sijainti = sijainti;
this.keli = keli;
}
public int getTag() {
return reissunTag;
}
public String getPaivamaara() {
return Pvm;
}
public String getSijainti() {
return sijainti;
}
public String getKeli() {
return keli;
}
public String toString() {
String tag = Integer.toString(reissunTag);
return tag + "|" + Pvm + "|" + sijainti + "|" + keli;
}
//helppo testi
public static void main(String[] args) {
Reissu testi = new Reissu(1, "12.12.2025", "Jyväskylä", "lumisade");
System.out.print(testi);
}
}