Zdravím, mám problém s JFrame, když totiž zadám:
okno.setTitle("a\tb");
tak se mi zobrazí: "ab". Rozumím tomu, že formátování v názvu okna je kravina, ale čím to nahradit? (Kromě nespočet mezer)
No, chyba byla nakonec ve čtení obrázku, každopádně, tady je celá metoda:
void zmenObrazek(String soubor) {
final int SIRKA_OBRAZKU = 495;
try {
String cesta = "/cz/graphic/" + soubor;
Icon image = new ImageIcon(ImageIO.read( WindowsObjects.class.getResourceAsStream(cesta)));
label.setIcon(image);
label.setBounds(795, (700 - image.getIconHeight()) / 2, SIRKA_OBRAZKU, image.getIconHeight());
} catch (IOException chyba) {
// chyba.printStackTrace();
}
}
A všem děkuji za pomoc
Už jsem to opravil, problém je, že tuto metodu jsem si dosadil do cyklu do - while, takže jsem tam měl akorát prohozené hodnoty, čili tohle je správně:
static boolean zkontroluj() {
for(int i = 1; i <= 9; i++) {
if(pole[i] < pole[i - 1]) {
return true;
}
}
return false;
}
Přišel jsem na to pár minut potom, co jsem to sem vložil, v metodě prohod(); sice hezky prohazuji promněné, ale nepřiřazuji je do pole..
Každopádně bych se chtěl ještě zeptat, jestli není něco efektivnějšího, než tahle zkouška:
(pole[0] <= pole[1]) && (pole[1] <= pole[2]) && (pole[2] <= pole[3]) && (pole[3] <= pole[4]) && (pole[4] <= pole[5]) && (pole[5] <= pole[6]) && (pole[6] <= pole[7]) && (pole[7 ]<= pole[8]) && (pole[8] <= pole[9])
Pokusil jsem se o cyklus:
static boolean zkontroluj() {
for(int i = 1; i <= 9; i++) {
if(pole[i] < pole[i - 1]) {
return false;
}
}
return true;
}
ten ovšem nefunguje tak, jak by měl.
Zdravím, napsal jsem jednoduchý program pro Bubble Sort pole, někde ovšem nastala chyba a nefunguje to:
package cz.vilix;
public class UntitledMain {
static boolean pokracovat = true;
static int[] pole = {99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49};
public static void main(String[] args) {
do {
for(int i = 1; i < 10; i++) {
if (pole[i] < pole[i - 1]) {
prohod(pole[i], pole[i - 1]);
}
}
zkontroluj();
} while(pokracovat);
vypis();
System.exit(0);
}
static void zkontroluj() {
if ((pole[0] <= pole[1]) && (pole[1] <= pole[2]) && (pole[2] <= pole[3]) && (pole[3] <= pole[4]) && (pole[4] <= pole[5]) && (pole[5] <= pole[6])
&& (pole[6] <= pole[7]) && (pole[7 ]<= pole[8]) && (pole[8] <= pole[9])) {
pokracovat = false;
}
}
static void prohod(int a, int b) {
int pom;
pom = a;
a = b;
b = pom;
}
static void vypis() {
for(int i = 0; i < 10; i++) {
System.out.println(pole[i]);
}
}
}
Domnívám se, že je chyba buď v metodě, která kontroluje, jestli je to seřazené, nebo v metodě, která promněnné prohazuje..
Jojo, zmiňují tam ty SDK Tesseract a Aspire. Nicméně jsem ještě našel jedno video, které používá SDK Aspose, očividně to ale funguje: https://www.youtube.com/watch?v=t5_j1zdtHc4
Více informací hlavně o Abby a Tesseract SDK je zde: http://stackoverflow.com/questions/1813881/java-ocr-implementation
Link na p2c http://schneider.ncifcrf.gov/p2c/ každopádně takové převody jsou mnohdy velmi nestabilní a vadné.
Podrobný popic a návod k p2c: http://www.garret.ru/ptoc/Readme.htm
Souhlasím s Pavlem Heroutem, pro něco rozsáhlejšího doporučuji od Herberta Schildta: Java 7.
Mám doma obě knihy a obě dvě můžu jenom chválit. Jen mi příjde trochu příjemnější nakladatelství Computer Press a proto asi trochu preferuji knihu od Herberta Schildta, Ta kniha je víc dopodrobna, než od Herouta, ale záleží na osobních preferencích.
P. Herout: http://knihy.abz.cz/prodej/ucebnice-jazyka-java-5-v
H. Schildt: http://knihy.cpress.cz/java-7.html
Jinak se dá do Javy dostat ještě pomocí nějákých tutoriálů a znalosti si doplňovat postupně potom z knih. Můj oblíbený byl od bambomachine: http://www.youtube.com/watch?v=rBQ96up-O5Y&list=PLCC47AEAE0BCC4C0C Tutoriály jsou v češtině a celkem příjemné.
Mně to teda nejede, ale v Eclipse jsem to nezkoušel.
Můžeš zkusit nainportovat ten .jar do Eclipse
Pravým na Project > Build Path > Configure Build Path > Záložka Libraries > Add Jars or Add External JARs
Každopádně by stálo za to zeptat se autora, nebo k tomu najít nějáký návod..
Problém je v tom, že tenhle .jar je jen v klasickém balíčku, ale není to spustitelný balíček. V případě, že to není spustitelný balíček, tak musíš k otevření použít tuto syntaxi:
java -cp coSeVytiskne.jar balicek.trida
kde: balicek znamená, kde je umístěna třída s hlavní metodou (main) a trida, je ta, kde je umistena primo ta hlavni metoda (main)
Pokud máš aplikaci, která nemá grafické rozhraní a funguje na konzoli, tak to musíš ve Windowsu otevřít přes příkazový řádek..
např:
java -jar coSeVytiskne.jar
důležité je při jar archivech syntaxe:
java -jar
Jinak je jednodužší si ty kódy zkopírovat do nějákého pěkného IDE (např. eclipse) a tam si je zkompilovat, pouštět a hrát si s něma.
Když napíšeš jen :
text.setText(number);
tak tomu dáváš argument typu int, ovšem když napíšeš:
text.setText(" " + number);
tak už spojuješ do promněnné typu String.
(můžeš to nahradit i uvozovkami bez mezery):
text.setText("" + number);
S tímhle jsem měl taky problém, v klasickém Swingu.
Během 5 minut se to dá zvládnout i v kvartě:
Program Konkurz;
var novaVyska: integer;
nejvyssiVyska: integer;
begin
nejvyssiVyska := 0;
writeln('Pis vysky hercu, pro vyhodnoceni zapisu napiste: 0');
repeat
readln(novaVyska);
if (novaVyska > nejvyssiVyska) then
nejvyssiVyska := novaVyska;
until novaVyska = 0;
writeln('Zvitezil herec s vyskou: ' ,nejvyssiVyska, ' cm.');
readln();
end.
funkční a jednoduchý kód..
Zdravím, když používám JFrame v Ubuntu 13.04 (na Windows takový problém nemám), tak při použití následujícího kódu:
import javax.swing.JFrame;
public class GUIMain {
static JFrame okno = new JFrame("Okno 1");
public static void main(String[] args) {
okno.setVisible(true);
okno.setSize(640, 480);
okno.setResizable(false);
}
}
dostanu takovéto okno:
(pravděpodobně nejmenší možná velikost)
Jakmile však přesunu příkaz: okno.setResizable(false); před okno.setSize(640, 480);, tak dostanu očekávaný výsledek:
Očividně příkaz: okno.setResizable(false); vymaže hodnoty velikosti. (Stejného výsledku jsem dosáhl, když jsem nezadal velikost)
Proč tomu ale tak je? A proč to funguje normálně na Windows 8?
Když mám například třídu:
package cz.vilix;
public class TestMain {
public static void main(String[] args) {
pozdrav(); //CHYBA
}
public void pozdrav() {
System.out.println("Ahoj");
}
}
tak metodu nemůžu volat, protože je nestatictká (samozřejmě by se dalo připsat akorát slovo static, a už by ta metoda byla funkční) ovšem je nějáký jiný způsob, jak volat nestatickou metodu v hlavní třídě? Třeba vytvořit nějáký objekt, či tak..
Už to mám, tady je podrobný návod jak využít ten Tesseract OCR SDK, http://www.java4less.com/ocrtools/ocrtools.php?info=guide
Pro Javu zatím nic takového bohužel neexistuje, jak již pojednává tato diskuze: http://stackoverflow.com/questions/1813881/java-ocr-implementation tak jediná možnost je jakýsi amatérský projekt na sourceforge, který se jmenuje Aprise..
Čtení textu pomocí Aprise:
výsledek:
fin l Rcsults
(%rtd a-z)
d t 16-09-l010 ti%t 30 ,37 l7
Ti%
Adrian (PIC)l3l 25 .lO.7
Bru 037 l .37.
C%l 052 21;2l.l
Takže to zas tak dobře nefunguje, pro více info je tady blog: http://roncemer.com/software-development/java-ocr/ snad tam najdeš nějáké užitečné věci.
Zdravím, chtěl bych se zeptat:
1. K čemu jsou abstraktní třídy, když ve trida1, která extends trida2 musím stejně napsat její tělo?
2. Abstraktní třídy jsou tvořeny jen k tomu, aby mohli být děděny?
3. Pokud trida1 extends trida2; trida2 extends trida3; a trida3 je abstraktní a má abstraktní metodu, tak tuto metodu musím definovat už ve trida2, nebo můžu i ve trida1?
Děkuji.
První se vytvoří objekt Timer:
Timer casovac = new Timer();
a pro jednorázovou akci:
casovac.schedule(new TimerTask() {
public void spust() {
}
}, 1000);
počítá to v tisícinách, takže teď je to nastaveno na 1 sec.
Do metody spust můžeš vložit kód. Pro opakování to stačí dát do cyklu.
Dobrý den, chtěl bych se zeptat, proč je syntaxe nového objektu:
TypObjektu mujNovyObjekt = TypObjektu();
Jednoduše nechápu, proč se tam 2x vyskytuje název toho objektu (TypObjektu), logičtější by mi připadala syntaxe:
mujNovyObjekt = new TypObjektu();
Děkuji
Wow, moc děkuji za rozsáhlou odpověď. Většinu z toho teď asi chápu, moc děkuj:)
Zdravím, prosil bych o detailnější vysvětlení hlavičky hlavní metody: public static void main(String args[]),
Chápu trochu klíčové slovo: public, jenž značí, že obsah této metody je přístupný i od členů mimo tuto třídu (což je asi podstatné, pokud je to hlavní metoda, která je volána JVM.)
Dále je zde static jehož funkce mi vůbec není známa.
Void je předpokládám klíčové slovo pro to, že tato metoda nevrací žádnou hodnotu (když je to hlavní metoda, tak asi nemá kam vracet tu hodnotu)
Mainpravděpodobně značí, že se jedná o hlavní metodu, ovšem nevím, jakým jiným slovem se dá nahradit, aby to hlavní metoda nebyla.
Účel (String args[]) mi bohužel vůbec není známý.
Děkuji za každou odpověď.