Estou tentando desenvolver em java. Sou Iniciante. Escolhi desenvolver um clone do paint do windows porque
acredito para desenvolver uma aplicação grafica simples como esta aprenderia no processo de desenvolvimento
dezenas ou centenas de aspecto de java.Não posso usar ides como o netbeans porque disponho apenas de 64 Mb
de ram e windows 98 instalado na maquina. assim tudo tem de ser feito na unha ou com codigo fonte.
Ai esta o problema:
Só pra criar uma interface usando swing pra gerar os menus do paint, um arquivo fonte de 510 linhas foi gerado.
para gerar eventos para cada item de menu e que cada caixa de dialogo de cada item de menu gerasse eventos
corretos como o paint eu teria um arquivo fonte de milhares e milhares de linhas onde seria dficil se não impossivel
localizar cada detalhe para altera-lo.
para localizar um determinado aspecto - o codigo que implementa o que o item de arquivo-novo faz necessario um novo
arquivo fonte com o codigo especifico.
como implementar isso? como criar multiplos arquivos para um projeto? compila-los e uni-los numa unica aplicação?
Tbm não sou expert em java, mas criei um exemplo aqui pelo Eclipse usando a o plugin Visual Class. Acho que ajuda.
Paint.java
importjava.awt.event.KeyEvent;importjava.awt.event.ActionListener;importjava.awt.event.ActionEvent;importjava.awt.Event;importjava.awt.BorderLayout;importjavax.swing.SwingConstants;importjavax.swing.SwingUtilities;importjavax.swing.KeyStroke;importjava.awt.Point;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JMenuItem;importjavax.swing.JMenuBar;importjavax.swing.JMenu;importjavax.swing.JFrame;importjavax.swing.JDialog;publicclassPaint{privateJFramejFrame=null;privateJPaneljContentPane=null;privateJMenuBarjJMenuBar=null;privateJMenufileMenu=null;privateJMenueditMenu=null;privateJMenuhelpMenu=null;privateJMenuItemexitMenuItem=null;privateJMenuItemaboutMenuItem=null;privateJMenuItemcutMenuItem=null;privateJMenuItemcopyMenuItem=null;privateJMenuItempasteMenuItem=null;privateJMenuItemsaveMenuItem=null;privateJMenuItemnewMenuItem=null;privateJDialogaboutDialog=null;privateJPanelaboutContentPane=null;privateJLabelaboutVersionLabel=null;/** * This method initializes jFrame * * @return javax.swing.JFrame */privateJFramegetJFrame(){if(jFrame==null){jFrame=newJFrame();jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jFrame.setJMenuBar(getJJMenuBar());jFrame.setSize(300,200);jFrame.setContentPane(getJContentPane());jFrame.setTitle("Paint");}returnjFrame;}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(newBorderLayout());}returnjContentPane;}/** * This method initializes jJMenuBar * * @return javax.swing.JMenuBar */privateJMenuBargetJJMenuBar(){if(jJMenuBar==null){jJMenuBar=newJMenuBar();jJMenuBar.add(getFileMenu());jJMenuBar.add(getEditMenu());jJMenuBar.add(getHelpMenu());}returnjJMenuBar;}/** * This method initializes jMenu * * @return javax.swing.JMenu */privateJMenugetFileMenu(){if(fileMenu==null){fileMenu=newJMenu();fileMenu.setText("File");fileMenu.add(getNewMenuItem());fileMenu.add(getSaveMenuItem());fileMenu.add(getExitMenuItem());}returnfileMenu;}/** * This method initializes jMenu * * @return javax.swing.JMenu */privateJMenugetEditMenu(){if(editMenu==null){editMenu=newJMenu();editMenu.setText("Edit");editMenu.add(getCutMenuItem());editMenu.add(getCopyMenuItem());editMenu.add(getPasteMenuItem());}returneditMenu;}/** * This method initializes jMenu * * @return javax.swing.JMenu */privateJMenugetHelpMenu(){if(helpMenu==null){helpMenu=newJMenu();helpMenu.setText("Help");helpMenu.add(getAboutMenuItem());}returnhelpMenu;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetExitMenuItem(){if(exitMenuItem==null){exitMenuItem=newJMenuItem();exitMenuItem.setText("Exit");exitMenuItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){System.exit(0);}});}returnexitMenuItem;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetAboutMenuItem(){if(aboutMenuItem==null){aboutMenuItem=newJMenuItem();aboutMenuItem.setText("About");aboutMenuItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){JDialogaboutDialog=getAboutDialog();aboutDialog.pack();Pointloc=getJFrame().getLocation();loc.translate(20,20);aboutDialog.setLocation(loc);aboutDialog.setVisible(true);}});}returnaboutMenuItem;}/** * This method initializes aboutDialog * * @return javax.swing.JDialog */privateJDialoggetAboutDialog(){if(aboutDialog==null){aboutDialog=newJDialog(getJFrame(),true);aboutDialog.setTitle("About");aboutDialog.setContentPane(getAboutContentPane());}returnaboutDialog;}/** * This method initializes aboutContentPane * * @return javax.swing.JPanel */privateJPanelgetAboutContentPane(){if(aboutContentPane==null){aboutContentPane=newJPanel();aboutContentPane.setLayout(newBorderLayout());aboutContentPane.add(getAboutVersionLabel(),BorderLayout.CENTER);}returnaboutContentPane;}/** * This method initializes aboutVersionLabel * * @return javax.swing.JLabel */privateJLabelgetAboutVersionLabel(){if(aboutVersionLabel==null){aboutVersionLabel=newJLabel();aboutVersionLabel.setText("Version 1.0");aboutVersionLabel.setHorizontalAlignment(SwingConstants.CENTER);}returnaboutVersionLabel;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetCutMenuItem(){if(cutMenuItem==null){cutMenuItem=newJMenuItem();cutMenuItem.setText("Cut");cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK,true));}returncutMenuItem;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetCopyMenuItem(){if(copyMenuItem==null){copyMenuItem=newJMenuItem();copyMenuItem.setText("Copy");copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK,true));}returncopyMenuItem;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetPasteMenuItem(){if(pasteMenuItem==null){pasteMenuItem=newJMenuItem();pasteMenuItem.setText("Paste");pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK,true));}returnpasteMenuItem;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetSaveMenuItem(){if(saveMenuItem==null){saveMenuItem=newJMenuItem();saveMenuItem.setText("Save");saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK,true));}returnsaveMenuItem;}/** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */privateJMenuItemgetNewMenuItem(){if(newMenuItem==null){newMenuItem=newJMenuItem();newMenuItem.setText("New");newMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,Event.CTRL_MASK,true));newMenuItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Imagemi=newImagem();i.setVisible(true);}});}returnnewMenuItem;}/** * Launches this application */publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){Paintapplication=newPaint();application.getJFrame().setVisible(true);}});}}
Imagem.java
importjava.awt.BorderLayout;importjavax.swing.JPanel;importjavax.swing.JFrame;publicclassImagemextendsJFrame{privatestaticfinallongserialVersionUID=1L;privateJPaneljContentPane=null;/** * This is the default constructor */publicImagem(){super();initialize();}/** * This method initializes this * * @return void */privatevoidinitialize(){this.setSize(300,200);this.setContentPane(getJContentPane());this.setTitle("JFrame");}/** * This method initializes jContentPane * * @return javax.swing.JPanel */privateJPanelgetJContentPane(){if(jContentPane==null){jContentPane=newJPanel();jContentPane.setLayout(newBorderLayout());}returnjContentPane;}}
V
VijavaPJ
Cara, se vc colocar em um arquivo seria praticamente impossivel vc dar manutencao depois, mesmo comentado. Alem de deixar o codigo completamente sujo. Seria correto implementar utilizando a estrutura MVC. Falo isso por experiencia propria, já desenvolvi algumas aplicacoes em casa, de aprendizado e hoje não consigo dar manutenção, pois falta essa estrutura de padrao de projeto.
F
fabiofalciPJ
Aprenda primeiro coisas simples e faça na mão. Aprenda sobre os layout manager do swing.
Assim tu consegue diividir a tua interface em pequenos paines e depois tu usa um layout manager pra ‘juntar’ tudo isso!
Uso um gui-builder somente para desenhar formularios num panel, e só.