Beagle
10.5.2011, 15:05
Imam jedan krajnje banalan problem. Naime, treba da postavim jedan JPanel u JFrame, te sam napravio dve klase:
Klasa Dodaj.java (ovo je panel, na njemu se nalazi samo jedno dugme, te je necu kaciti) i klasa FMGlavna.java (ova je frejm). Frejm ima jedan meni, i klikokm na stavku "Dodaj" trerbao bi da se ucita panel:
package forme;
import forme.paneli.Dodaj;
import java.awt.BorderLayout;
import javax.swing.JPanel;
/**
*
* @author Neustrasivi
*/
public class FMGlavna extends javax.swing.JFrame {
private JPanel aktivanPanel;
/** Creates new form FMGlavna */
public FMGlavna() {
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() {
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jmnDodaj = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);
jMenu1.setText("File");
jMenu1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jMenu1MouseClicked(evt);
}
});
jMenu1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu1ActionPerformed(evt);
}
});
jmnDodaj.setText("Dodaj");
jmnDodaj.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jmnDodajActionPerformed(evt);
}
});
jMenu1.add(jmnDodaj);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
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, 279, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jmnDodajActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Dodaj dd = new Dodaj();
postaviPanel(dd);
}
private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jMenu1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FMGlavna().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jmnDodaj;
// End of variables declaration
private void postaviPanel(JPanel panel) {
if (aktivanPanel==null);
else this.remove(aktivanPanel);
aktivanPanel=panel;
getContentPane().add(panel,BorderLayout.CENTER);
aktivanPanel.setVisible(true);
validate();
repaint();
}
}
Ovaj kod bi trebalo da radi, ali kod mene ni da bekne :confused:. Ne znam da li je problem do 64-bitno OS-a... Boldovao sam modifikovani deo koda (onaj koji IDE nije generisao).
Klasa Dodaj.java (ovo je panel, na njemu se nalazi samo jedno dugme, te je necu kaciti) i klasa FMGlavna.java (ova je frejm). Frejm ima jedan meni, i klikokm na stavku "Dodaj" trerbao bi da se ucita panel:
package forme;
import forme.paneli.Dodaj;
import java.awt.BorderLayout;
import javax.swing.JPanel;
/**
*
* @author Neustrasivi
*/
public class FMGlavna extends javax.swing.JFrame {
private JPanel aktivanPanel;
/** Creates new form FMGlavna */
public FMGlavna() {
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() {
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jmnDodaj = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);
jMenu1.setText("File");
jMenu1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jMenu1MouseClicked(evt);
}
});
jMenu1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenu1ActionPerformed(evt);
}
});
jmnDodaj.setText("Dodaj");
jmnDodaj.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jmnDodajActionPerformed(evt);
}
});
jMenu1.add(jmnDodaj);
jMenuBar1.add(jMenu1);
jMenu2.setText("Edit");
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
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, 279, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
private void jmnDodajActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Dodaj dd = new Dodaj();
postaviPanel(dd);
}
private void jMenu1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jMenu1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FMGlavna().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jmnDodaj;
// End of variables declaration
private void postaviPanel(JPanel panel) {
if (aktivanPanel==null);
else this.remove(aktivanPanel);
aktivanPanel=panel;
getContentPane().add(panel,BorderLayout.CENTER);
aktivanPanel.setVisible(true);
validate();
repaint();
}
}
Ovaj kod bi trebalo da radi, ali kod mene ni da bekne :confused:. Ne znam da li je problem do 64-bitno OS-a... Boldovao sam modifikovani deo koda (onaj koji IDE nije generisao).