Netbeans - Desafio do professor!

Seguinte pessoal. Meu professor na semana passada me disse pra perquisar as seguintes “ferramentas” da linguagem Java: JMenu, JMenuItem, JFrame e JMenuBar. Eu já pesquisei em vários sites pela internet e encontrei como fazer… Porém não entendi direito o que é cada uma dessas coisas, como utilizá-las e essas coisas… Vi alguns códigos fontes que resolveriam o meu problema, porém, necessito de algo mais explicativo e visual pra que eu possa entender melhor… Alguem pode me ajudar? Ele me pediu pra criar uma Janela qualquer que contenha um menu e este menu deve se parecer com os do Windows Ex.: Arquivo > Abrir, Salvar e Sair. Só isso que ele me pediu… Se alguem puder me ajudar eu agradeço… Valeu pessoal abraço \o

Opa Dante,

Porque você não usa o NetBeans 6.8 para criar seus aplicativos GUI?
Muito melhor e mais fácil…

Lá você usa o recurso de arrastar para criar seus menus, que nem no windows (Arquivo, Exibir, …)

Seria uma boa kra mas é que na escola nós não usamos esse 6.8 e o professor quer q eu faça na mão rsrsrs… Quer saber se eu sou capaz ^_^… Por isso preciso que alguem me ensine

Esse projeto aqui é o básico do básico para Windows Frame.
Era desse tipo?

[code]public class WindowsFrame extends javax.swing.JFrame {

public WindowsFrame() {
    initComponents();
}

@SuppressWarnings("unchecked")
private void initComponents() {

    jMenuBar1 = new javax.swing.JMenuBar();
    menuArquivo = new javax.swing.JMenu();
    menuIAbrir = new javax.swing.JMenuItem();
    menuISalvar = new javax.swing.JMenuItem();
    menuISalvarc = new javax.swing.JMenuItem();
    jSeparator1 = new javax.swing.JPopupMenu.Separator();
    menuIImprimir = new javax.swing.JMenuItem();
    jSeparator2 = new javax.swing.JPopupMenu.Separator();
    menuISair = new javax.swing.JMenuItem();
    menuEditar = new javax.swing.JMenu();
    menuIDesf = new javax.swing.JMenuItem();
    menuIRef = new javax.swing.JMenuItem();
    menuICopiar = new javax.swing.JMenuItem();
    menuIRecortar = new javax.swing.JMenuItem();
    menuIColar = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    menuArquivo.setText("Arquivo");

    menuIAbrir.setText("Abrir");
    menuArquivo.add(menuIAbrir);

    menuISalvar.setText("Salvar");
    menuArquivo.add(menuISalvar);

    menuISalvarc.setText("Salvar como...");
    menuArquivo.add(menuISalvarc);
    menuArquivo.add(jSeparator1);

    menuIImprimir.setText("Imprimir");
    menuArquivo.add(menuIImprimir);
    menuArquivo.add(jSeparator2);

    menuISair.setText("Sair");
    menuArquivo.add(menuISair);

    jMenuBar1.add(menuArquivo);

    menuEditar.setText("Editar");

    menuIDesf.setText("Desfazer");
    menuEditar.add(menuIDesf);

    menuIRef.setText("Refazer");
    menuEditar.add(menuIRef);

    menuICopiar.setText("Copiar");
    menuEditar.add(menuICopiar);

    menuIRecortar.setText("Recortar");
    menuEditar.add(menuIRecortar);

    menuIColar.setText("Colar");
    menuEditar.add(menuIColar);

    jMenuBar1.add(menuEditar);

    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();
}

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new WindowsFrame().setVisible(true);
        }
    });
}


private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JPopupMenu.Separator jSeparator1;
private javax.swing.JPopupMenu.Separator jSeparator2;
private javax.swing.JMenu menuArquivo;
private javax.swing.JMenu menuEditar;
private javax.swing.JMenuItem menuIAbrir;
private javax.swing.JMenuItem menuIColar;
private javax.swing.JMenuItem menuICopiar;
private javax.swing.JMenuItem menuIDesf;
private javax.swing.JMenuItem menuIImprimir;
private javax.swing.JMenuItem menuIRecortar;
private javax.swing.JMenuItem menuIRef;
private javax.swing.JMenuItem menuISair;
private javax.swing.JMenuItem menuISalvar;
private javax.swing.JMenuItem menuISalvarc;

}[/code]

porque vc não faz um no netbeans, e depois estuda o código gerado e otimiza ele ?

e pode ter certeza que vc vai conseguir otimizar , pois o netbeans gera alguns códigos desnecessários.

rsrs… Agradeço sua ajuda, sua boa intenção, mas só usei o menu do Windows como exemplo mesmo… O que o meu professor me pediu é algo bem simples tipo… só exibir uma janelinha bm xoxa mesmo com um menuzinho bem básico com um menu Arquivo e ai com uns submenuzinhos Abrir Salvar e Sair só isso… :slight_smile:

[quote=kdoigor]porque vc não faz um no netbeans, e depois estuda o código gerado e otimiza ele ?

e pode ter certeza que vc vai conseguir otimizar , pois o netbeans gera alguns códigos desnecessários.[/quote]

É que eu nunca mexi com Jframe nem nada disso entende? entaum… como eu poderia criar isso entende? num tem como rsrs… preciso que alguem me passe alguns conceitos sobre Frame e Menu e tals ^^

Como é que teu professor te pede uma coisa que você nunca teve vivência? Você faltou a aula dele sobre JFrame?

Cara, o que eu te mandei é o que seu professor pediu…
Pega o código-fonte e estuda ele po, não é tão dificil. Claro que pode ter algo que você não entenda o por que, mas é só perguntar aqui…

Abraço,

[code]

  • DesktopApplication1View.java
    */

package desktopapplication1;

import org.jdesktop.application.Action;
import org.jdesktop.application.ResourceMap;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import org.jdesktop.application.TaskMonitor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
import javax.swing.Icon;
import javax.swing.JDialog;
import javax.swing.JFrame;

/**

  • The application’s main frame.
    */
    public class DesktopApplication1View extends FrameView {

    public DesktopApplication1View(SingleFrameApplication app) {
    super(app);

     initComponents();
    
     // status bar initialization - message timeout, idle icon and busy animation, etc
     ResourceMap resourceMap = getResourceMap();
     int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
     messageTimer = new Timer(messageTimeout, new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             statusMessageLabel.setText("");
         }
     });
     messageTimer.setRepeats(false);
     int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
     for (int i = 0; i < busyIcons.length; i++) {
         busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
     }
     busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {
         public void actionPerformed(ActionEvent e) {
             busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
             statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
         }
     });
     idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
     statusAnimationLabel.setIcon(idleIcon);
     progressBar.setVisible(false);
    
     // connecting action tasks to status bar via TaskMonitor
     TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
     taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
         public void propertyChange(java.beans.PropertyChangeEvent evt) {
             String propertyName = evt.getPropertyName();
             if ("started".equals(propertyName)) {
                 if (!busyIconTimer.isRunning()) {
                     statusAnimationLabel.setIcon(busyIcons[0]);
                     busyIconIndex = 0;
                     busyIconTimer.start();
                 }
                 progressBar.setVisible(true);
                 progressBar.setIndeterminate(true);
             } else if ("done".equals(propertyName)) {
                 busyIconTimer.stop();
                 statusAnimationLabel.setIcon(idleIcon);
                 progressBar.setVisible(false);
                 progressBar.setValue(0);
             } else if ("message".equals(propertyName)) {
                 String text = (String)(evt.getNewValue());
                 statusMessageLabel.setText((text == null) ? "" : text);
                 messageTimer.restart();
             } else if ("progress".equals(propertyName)) {
                 int value = (Integer)(evt.getNewValue());
                 progressBar.setVisible(true);
                 progressBar.setIndeterminate(false);
                 progressBar.setValue(value);
             }
         }
     });
    

    }

    @Action
    public void showAboutBox() {
    if (aboutBox == null) {
    JFrame mainFrame = DesktopApplication1.getApplication().getMainFrame();
    aboutBox = new DesktopApplication1AboutBox(mainFrame);
    aboutBox.setLocationRelativeTo(mainFrame);
    }
    DesktopApplication1.getApplication().show(aboutBox);
    }

    /** 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”)
      //
      private void initComponents() {

      mainPanel = new javax.swing.JPanel();
      jButton1 = new javax.swing.JButton();
      jButton2 = new javax.swing.JButton();
      jButton3 = new javax.swing.JButton();
      jTextField1 = new javax.swing.JTextField();
      jLabel1 = new javax.swing.JLabel();
      menuBar = new javax.swing.JMenuBar();
      javax.swing.JMenu fileMenu = new javax.swing.JMenu();
      javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
      javax.swing.JMenu helpMenu = new javax.swing.JMenu();
      javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
      statusPanel = new javax.swing.JPanel();
      javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
      statusMessageLabel = new javax.swing.JLabel();
      statusAnimationLabel = new javax.swing.JLabel();
      progressBar = new javax.swing.JProgressBar();

      org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(desktopapplication1.DesktopApplication1.class).getContext().getResourceMap(DesktopApplication1View.class);
      mainPanel.setBackground(resourceMap.getColor(“mainPanel.background”)); // NOI18N
      mainPanel.setName(“mainPanel”); // NOI18N

      jButton1.setText(resourceMap.getString(“jButton1.text”)); // NOI18N
      jButton1.setName(“jButton1”); // NOI18N

      jButton2.setText(resourceMap.getString(“jButton2.text”)); // NOI18N
      jButton2.setName(“jButton2”); // NOI18N

      jButton3.setText(resourceMap.getString(“jButton3.text”)); // NOI18N
      jButton3.setName(“jButton3”); // NOI18N

      jTextField1.setText(resourceMap.getString(“jTextField1.text”)); // NOI18N
      jTextField1.setName(“jTextField1”); // NOI18N

      jLabel1.setText(resourceMap.getString(“jLabel1.text”)); // NOI18N
      jLabel1.setName(“jLabel1”); // NOI18N

      javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
      mainPanel.setLayout(mainPanelLayout);
      mainPanelLayout.setHorizontalGroup(
      mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(mainPanelLayout.createSequentialGroup()
      .addContainerGap()
      .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
      .addGroup(mainPanelLayout.createSequentialGroup()
      .addComponent(jLabel1)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 111, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGroup(mainPanelLayout.createSequentialGroup()
      .addComponent(jButton1)
      .addGap(29, 29, 29)
      .addComponent(jButton2)))
      .addGap(34, 34, 34)
      .addComponent(jButton3)
      .addContainerGap(108, Short.MAX_VALUE))
      );
      mainPanelLayout.setVerticalGroup(
      mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
      .addGap(43, 43, 43)
      .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addComponent(jLabel1))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 152, Short.MAX_VALUE)
      .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(jButton1)
      .addComponent(jButton2)
      .addComponent(jButton3))
      .addContainerGap())
      );

      menuBar.setName(“menuBar”); // NOI18N

      fileMenu.setText(resourceMap.getString(“fileMenu.text”)); // NOI18N
      fileMenu.setName(“fileMenu”); // NOI18N

      javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(desktopapplication1.DesktopApplication1.class).getContext().getActionMap(DesktopApplication1View.class, this);
      exitMenuItem.setAction(actionMap.get(“quit”)); // NOI18N
      exitMenuItem.setName(“exitMenuItem”); // NOI18N
      fileMenu.add(exitMenuItem);

      menuBar.add(fileMenu);

      helpMenu.setText(resourceMap.getString(“helpMenu.text”)); // NOI18N
      helpMenu.setName(“helpMenu”); // NOI18N

      aboutMenuItem.setAction(actionMap.get(“showAboutBox”)); // NOI18N
      aboutMenuItem.setName(“aboutMenuItem”); // NOI18N
      helpMenu.add(aboutMenuItem);

      menuBar.add(helpMenu);

      statusPanel.setBackground(resourceMap.getColor(“statusPanel.background”)); // NOI18N
      statusPanel.setName(“statusPanel”); // NOI18N

      statusPanelSeparator.setName(“statusPanelSeparator”); // NOI18N

      statusMessageLabel.setName(“statusMessageLabel”); // NOI18N

      statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
      statusAnimationLabel.setName(“statusAnimationLabel”); // NOI18N

      progressBar.setName(“progressBar”); // NOI18N

      javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
      statusPanel.setLayout(statusPanelLayout);
      statusPanelLayout.setHorizontalGroup(
      statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
      .addGroup(statusPanelLayout.createSequentialGroup()
      .addContainerGap()
      .addComponent(statusMessageLabel)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 230, Short.MAX_VALUE)
      .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(statusAnimationLabel)
      .addContainerGap())
      );
      statusPanelLayout.setVerticalGroup(
      statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(statusPanelLayout.createSequentialGroup()
      .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
      .addComponent(statusMessageLabel)
      .addComponent(statusAnimationLabel)
      .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(3, 3, 3))
      );

      setComponent(mainPanel);
      setMenuBar(menuBar);
      setStatusBar(statusPanel);
      }//

    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JPanel mainPanel;
    private javax.swing.JMenuBar menuBar;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JLabel statusAnimationLabel;
    private javax.swing.JLabel statusMessageLabel;
    private javax.swing.JPanel statusPanel;
    // End of variables declaration

    private final Timer messageTimer;
    private final Timer busyIconTimer;
    private final Icon idleIcon;
    private final Icon[] busyIcons = new Icon[15];
    private int busyIconIndex = 0;

    private JDialog aboutBox;
    }[/code]

exemplo facil!

[quote=kdoigor]porque vc não faz um no netbeans, e depois estuda o código gerado e otimiza ele ?

e pode ter certeza que vc vai conseguir otimizar , pois o netbeans gera alguns códigos desnecessários.[/quote]

Lol, eu não acho nenhum código criado por ele desnecessário…
Pode até ter uns códigos substituíveis, mas tudo tem um cronograma lógico,

Minha Opnião :wink:

[quote=felipebonezi]Como é que teu professor te pede uma coisa que você nunca teve vivência? Você faltou a aula dele sobre JFrame?

Cara, o que eu te mandei é o que seu professor pediu…
Pega o código-fonte e estuda ele po, não é tão dificil. Claro que pode ter algo que você não entenda o por que, mas é só perguntar aqui…

Abraço,[/quote]

\o/… Vlw entaum garoto ^^… Num faltei a aula não… é que modestia parte eu sou um dos melhores programadores da sala rsrs… Repetindo num to querendo me gabar naum blz? ai pra me testar ele me desafiou com esse negocinho \o… Mas vlw pela ajuda todos que responderam minha pergunta ^^

na boa horrivel usar o netbeans para fazer GUI!

muito codigo inutil gerado…

Lol, eu não acho nenhum código criado por ele desnecessário…
Pode até ter uns códigos substituíveis, mas tudo tem um cronograma lógico,

[/quote]
entenda-se código desnecessário, porque vc não precisa dele.
se fosse necessário , vc não faria a substituição.
:slight_smile:

a não ser que vc não se preocupe com desempenho, mantenha a “sequência lógica” gerada pela IDE.

Entaum galera… voltei ‘-’… Tenho outro problema xD… meu professor tbm pediu o seguinte: pra ao invés deu jogar True ou False pra uma variavel eu inverter e jogar String… vou explikr

boolean var = Bollean.parseBoolean(JOptionPane.showInputDialog("Deseja ar-condicionado?"); If (resp = "S" || resp = "s") { objcarro.setAr(true);

Aí na caixa de mensagem apareceria assim

Ar: True

Ao invés de true ele quer que eu exiba a resposta do usuário. Sim ou não, por exemplo:

Ar: Sim…

Alguem pode me dar uma luz? ‘-’

veio, pega o atributo ar do seu objeto carro e muda de boolean para String;
reescreve o get e set.
faz o tratamento pra mostrar ‘sim’ ou ‘não’