Diskuze: Swing-zprovoznění prvního programu
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 41 zpráv z 41.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Chybí ti v projektu metoda main, smázni ten JPanel formulář Ja.java a místo něj vytvoř JFrame formulář, ten ti vytvoří metodu main a pak to půjde spustit.
Chtěl jsem tě odkázat na článek https://www.itnetwork.cz/…plikace-uvod, ale všiml jsem si že už ses tam ptal se stejným problémem. Aspoň jsem si ale ověřil, kde děláš chybu - je to v tom druhém kroku, hned po vytvoření nového projektu, když ten článek říká 'Na vytvořený projekt klikneme v oknu Projects pravým tlačítkem a přidáme nový JFrame form.' tak tys tam vybral JPanel místo JFrame. JPanel nevytváří tu main metodu, zatímco JFrame ji vytváří. Takže jak jsem říkal, smaž to co máš a zkus to znova a dej si na to pozor a bude to fungovat.
Zkusil jsem to, vytvořil jsem nový projekt a přidal jsem JFrame form ale vyskočila ta samá chyba
No celého toho souboru co to vytvořilo, vytvořilo to jenom jeden ne?
Jo
public class NewJFrame extends javax.swing.JFrame {
/** Creates new form NewJFrame */
public NewJFrame() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}
// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
// End of variables declaration
}
Ještě tam je licenční hlavička, ale tu asi nepotřebuješ co?
Ježiši tohle mi to nedalo má to být:
public class NewJFrame12 extends javax.swing.JFrame {
/** Creates new form NewJFrame12 */
public NewJFrame12() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}
// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(NewJFrame12.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(NewJFrame12.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(NewJFrame12.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(NewJFrame12.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame12().setVisible(true);
}
});
}
// Variables declaration - do not modify
// End of variables declaration
}
Napíše to: Class "NewJFrame12" does not have a main method
Tak z toho jsem jelen, podle toho cos postoval výše ji tam ale máš! Hele asi bych zkusil ten Netbeans komplet odinstalovat a nainstalovat znova, rovnou bych stáhnul novější verzi, minulý týden vyšla verze 12.2 a zkusil bych to znova. Tam bude něco shnilého v tom Netbeans...
Ok tak udělejme takový úkrok stranou, podívej se na tenhle článek https://www.itnetwork.cz/…ova-aplikace a zkus nainstalovat Javu a Netbeans krok za krokem tak jak je to v něm popsané a zprovoznit ten Hello world projekt, co to udělá...
Odinstaloval jsi napřed všechny verze Javy a Netbeans které jsi předtím
nainstaloval? Zkus to ještě jednou, napřed se ujisti že jsi odinstaloval
všechnu Javu a všechny Netbeans, pak pro jistotu zajdi ve svém domovském
adresáři do adresářů AppData\Local a AppData\Roaming a v nich smaž
adresář netbeans, pokud tam nějaký bude. Taky se ujisti že máš
nainstalované všechny Windows updaty a pro jistotu ještě jednou restartuj
celý počítač (nemyslím si opravdu že by to mohlo něco ovlivnit, ale nic
za to nedáš )
Pak teprve zkus znova nainstalovat Javu a Netbeans, přesně podle článku
který jsem odkazoval výše. Pokud to ani pak nebude fungovat tak pak nevím
Leda zkusit jiné IDE, třeba
Intellij Idea Comunnity Edition https://www.jetbrains.com/idea/download/#…
Super, a jde ti teda tedka vytvořit i to JFrame okno a spustit?
Aha ok já myslel že mluvíš o tom konsolovém Hello world, tak super, že se to povedlo vyřešit...
O tom se píše ve čtvrté lekci https://www.itnetwork.cz/…rh-formularu
Myslím ikonu celé aplikace, kód ve druhé lekci nefunguje.
Ukaž kód, který ti nefunguje a co to vypíše, když se ho pokusíš pustit.
ImageIcon icon = new ImageIcon(getClass().getResource("/ikona.png"));
hlavniJFrame.setIconImage(icon.getImage());
a vypíše to:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at HlavniJFrame$1.run(HlavniJFrame.java:94)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
BUILD SUCCESSFUL (total time: 11 seconds)
Okno se zobrazí, ale bez ikony
Ukaž celou tu metodu main. A máš ten soubor 'ikona.png' ve správném adresáři?
soubor "ikona.png" mám ve složce src a kód je zde:
import javax.swing.ImageIcon;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author janpi
*/
public class HlavniJFrame extends javax.swing.JFrame {
/**
* Creates new form HlavniJFrame
*/
public HlavniJFrame() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Pozdrav z formuláře");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(70, 70, 70)
.addComponent(jLabel1)
.addContainerGap(76, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(72, Short.MAX_VALUE)
.addComponent(jLabel1)
.addGap(68, 68, 68))
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(HlavniJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(HlavniJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(HlavniJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(HlavniJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
HlavniJFrame hlavniJFrame = new HlavniJFrame();
hlavniJFrame.setLocationRelativeTo(null);
hlavniJFrame.setVisible(true);
hlavniJFrame.setResizable(true);
hlavniJFrame.setMinimumSize(hlavniJFrame.getSize());
ImageIcon icon = new ImageIcon(getClass().getResource("/ikona.png"));
hlavniJFrame.setIconImage(icon.getImage());
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
// End of variables declaration
}
Ještě u řádku
ImageIcon icon = new ImageIcon(getClass().getResource("/ikona.png"));
mám žárovku s červeným kroužkem a tam je: cannot find symbol
symbol: class ImageIcon
Divný, podle mně by to mělo fungovat, zkouším to tedka u sebe a v pohodě to jede, zkus jestli nepomůže Clean and Build...
Zobrazeno 41 zpráv z 41.