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…
[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”); // NOI18NjButton1.setText(resourceMap.getString(“jButton1.text”)); // NOI18N
jButton1.setName(“jButton1”); // NOI18NjButton2.setText(resourceMap.getString(“jButton2.text”)); // NOI18N
jButton2.setName(“jButton2”); // NOI18NjButton3.setText(resourceMap.getString(“jButton3.text”)); // NOI18N
jButton3.setName(“jButton3”); // NOI18NjTextField1.setText(resourceMap.getString(“jTextField1.text”)); // NOI18N
jTextField1.setName(“jTextField1”); // NOI18NjLabel1.setText(resourceMap.getString(“jLabel1.text”)); // NOI18N
jLabel1.setName(“jLabel1”); // NOI18Njavax.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”); // NOI18Njavax.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”); // NOI18NaboutMenuItem.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”); // NOI18NstatusPanelSeparator.setName(“statusPanelSeparator”); // NOI18N
statusMessageLabel.setName(“statusMessageLabel”); // NOI18N
statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
statusAnimationLabel.setName(“statusAnimationLabel”); // NOI18NprogressBar.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 declarationprivate 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
[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.
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’