1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

prob. em java...

Discussão em 'Programação' iniciada por _[D]4rk$h0t_, 17 de Dezembro de 2008. (Respostas: 11; Visualizações: 769)

  1. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    È assim pessoal o prof. deu-nos um trabalho e durante a realizaçao deste deparei-me com um problema em passar uma variavel de uma classe para outra.. vou por aki um pouco de codigo(inventado agora) so para demonstrar o meu problema:

    public class Main{

    public Main(){
    }

    void salvar(int x){
    }
    }

    public class insert{

    public insert(){
    int abc = 123;
    salvar(abc);
    }
    }

    tipo o meu problema é que ele na classe insert nao reconhece o método salvar.. e nao posso alterar o construtor da classe Main :/ Espero por alguma soluçao "engenhosa".

    Cumps.
     
  2. zyThuM

    zyThuM Power Member

    Tens que declarar um objecto do tipo Main para poderes chamar um método dessa class.

    Umas coisa do Genero:

    Código:
    Main main = new Main();
    main.salvar(abc);

    Isto assunto tem a ver com a manipulação de objectos, convém perceberes bém como estas coisas funcionam para conseguires avançar. Não é nada de complicado mas convém teres isso bem presente.
     
  3. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    pois só que tipo a classe Main é uma "janela".. nao posso criar objectos dakele tipo.. xD

    EDIT: se fosse só isso eu tinha feito -.-''
     
  4. zyThuM

    zyThuM Power Member

    Então tás a dizer que é uma Static Class?
     
  5. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    o que entendes por static class? :x
     
  6. zyThuM

    zyThuM Power Member

    Se puderes mete aí o código "real".
     
  7. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    ok... mas é um bocado.. tipo vou tentar explicar o programa.. e por aki o enunciado do problema..

    Trabalho


    Pretende-se que construas um programa em Java que deverá ter o seguinte aspecto:



    A constituição do Menu 1 e do Menu 2 é a seguinte:


    Nenhum dos itens do menu terá acção.

    O objecto Livros tem as seguintes propriedades: id_livro, nome_livro e assunto. Os elementos adicionados na JList foram adicionados manualmente e não usando a Base de Dados.

    No layout é possível ver 3 botões:

    a) Botão inserir. Quando clicamos neste botão irá surgir uma nova janela com o seguinte aspecto:



    Após inserir os dados, carregamos no botão gravar que terá 2 acções: adicionar um novo livro ao vector e por fim fechar esta janela.

    b) Botão apagar. Após clicarmos no botão apagar, deverá apagar do vector o elemento seleccionado e actualizar a JList.

    c) Botão editar. Após clicarmos no botão editar, deverá surgir uma nova janela, e nas caixas de texto deverão ficar os valores do objecto seleccionado. Quando carregamos no botão gravar deverá actualizar os parâmetros do objecto bem como fechar a janela.


    O Programa deverá estar muito bem estruturado e deverá obedecer ás seguintes regras:

    a) No construtor da classe Main deverá ter o seguinte código:

    public Main() {
    super("Teste de Recuperação");
    setupActions();
    setupMenu();
    setupLayout();
    addElementsPanel();
    setSize(450,300);
    setVisible(true);
    }

    b) No método setupActions(); serão definidas todas as acções dos componentes do programa;
    c) No método setupMenu(); será definido o menu;
    d) No método setupLayout(); serão definidos os layouts das frames e dos painéis;
    e) No método addElementsPanel(); adicionamos os diversos componentes aos painéis e/ou ás frames.

    sorry mas nao consegui por as imagens..


    e agora ponho o meu Main..

    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Vector;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
    import javax.swing.ListModel;

    public class Main extends JFrame {
    private JList list = new JList();
    private JButton insert = new JButton("Inserir");
    private JButton erase = new JButton("Apagar");
    private JButton edit = new JButton("Editar");
    private JMenuBar bar = new JMenuBar();
    private JMenu menu1 = new JMenu("Menu 1");
    private JMenu menu2 = new JMenu("Menu 2");
    private JPanel panel = new JPanel();
    private static Vector<livro> temp = new Vector<livro>();

    public Main() {
    super("Livraria");
    setupActions();
    setupMenu();
    setupLayout();
    addElementsPanel();
    setSize(450,300);
    setVisible(true);
    }


    private void addElementsPanel() {
    panel.setLayout(new GridLayout(3, 1));
    panel.add(insert);
    panel.add(erase);
    panel.add(edit);

    }

    private void setupLayout() {
    setLayout(new BorderLayout());
    add(bar, BorderLayout.PAGE_START);
    add(list, BorderLayout.WEST);
    add(panel, BorderLayout.EAST);
    panel.setPreferredSize(new Dimension(221, 100));
    list.setPreferredSize(new Dimension(221, 300));
    }

    private void setupMenu() {
    bar.add(menu1);
    bar.add(menu2);
    menu1.add(new JMenuItem("Item 1"));
    menu1.add(new JMenuItem("Item 2"));
    menu2.add(new JMenuItem("Help"));
    }

    private void setupActions() {
    list = new JList(preenche());
    insert.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    new insert();
    }
    });



    }


    private void salvar(livro abc) {
    temp.addElement(abc);
    list = new JList(temp);
    }

    private Vector<livro> preenche() {
    temp.addElement(new livro(1, "Livro1", "?"));
    temp.addElement(new livro(2, "Livro2", "??"));
    temp.addElement(new livro(3, "Livro 3", "???"));
    return temp;
    }

    public static void main(String[] args) {
    new Main();

    }

    }

    a classe dos livros...

    public class livro {
    private int id_livro;
    private String nome_livro;
    private String assunto;

    public livro(int id_livro, String livro, String assunto) {
    super();
    this.id_livro = id_livro;
    this.nome_livro = livro;
    this.assunto = assunto;
    }

    public int getId_livro() {
    return id_livro;
    }

    public void setId_livro(int id_livro) {
    this.id_livro = id_livro;
    }

    public String getLivro() {
    return nome_livro;
    }

    public void setLivro(String livro) {
    this.nome_livro = livro;
    }

    public String getAssunto() {
    return assunto;
    }

    public void setAssunto(String assunto) {
    this.assunto = assunto;
    }


    public String toString() {

    return "Nome: "+ nome_livro;
    }


    }

    e a k abre a 2 janela(ou seja kuando carrego no inserir)

    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.JPopupMenu.Separator;
    import javax.swing.plaf.SeparatorUI;


    public class insert extends JFrame{
    JTextField txt1 = new JTextField();
    JTextField txt2 = new JTextField();
    JTextField txt3 = new JTextField();
    JButton bt = new JButton("Gravar");

    public insert(){
    super("Inserir Livros");
    setBounds(300, 300, 450, 250);
    setLayout(new GridLayout(4, 2));
    add(new JLabel("Número do Livro:"));
    add(txt1);
    add(new JLabel("Nome do Livro:"));
    add(txt2);
    add(new JLabel("Assunto do Livro:"));
    add(txt3);
    add(new JLabel());
    add(bt);
    setupActions();
    setVisible(true);
    }

    private void setupActions() {
    bt.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    livro tmp = new livro(Integer.parseInt(txt1.getText()), txt2.getText(), txt3.getText());
    salvar(tmp);//este comando da erro.. pois estou tentanto mandar a variavel para a outra classe e era isto que queria resolver..
    dispose();
    }
    });

    }

    peço desculpa se esta confuso... :/

    }
     
  8. zyThuM

    zyThuM Power Member

    O método salvar da class Main é private logo não pode ser acedida fora da class Main.

    Tens que passar o método para public para poderes aceder fora da class Main:

    Código:
    public void salvar(livro abc) {
    		temp.addElement(abc);
    		list = new JList(temp);
    	}
     
  9. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    Eu fiz isso mas continua dando erro... :/
     
  10. zyThuM

    zyThuM Power Member

    Fizeste como tinha dito anteriormente?

     
  11. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    Tipo o new Main() = new Main(); eu nao posso fazer..
    mas pus o método public e continuou nao reconhecendo na classe insert..
     
  12. _[D]4rk$h0t_

    _[D]4rk$h0t_ Power Member

    Eskece.. akela cena do new Main.. até k deu.. so tem um prob.. ele em vez de actualizar a JList abriu me outra janela.. com a JList actualizada..
     

Partilhar esta Página