Dúvida sobre programção em java

3 respostas
javaprogramação
A

é o seguinte, to desenvolvendo um software, minha ideia é fazer com que o usuário selecione um município, e em seguida seja mostrado em um jPanel.

eu criei um método para mostra o município, esse método recebe uma string nome, que é o nome município como parâmeto, ai eu ja inicio a aplicação com um município pré-estabelecido.

Só que eu quero mudar a String nome do método a partir de um click no botão, porém não consigo de jeito nenhum ter acesso ao public Principal2{ } para mudar o nome…

package br.interfaces;

import com.teamdev.jxmaps.GeocoderCallback;

import com.teamdev.jxmaps.GeocoderRequest;

import com.teamdev.jxmaps.GeocoderResult;

import com.teamdev.jxmaps.GeocoderStatus;

import com.teamdev.jxmaps.Map;

import com.teamdev.jxmaps.MapReadyHandler;

import com.teamdev.jxmaps.MapStatus;

import com.teamdev.jxmaps.Marker;

import com.teamdev.jxmaps.swing.MapView;

import java.awt.BorderLayout;

public class Principal2 extends javax.swing.JFrame {

private MapView mapView;
private Map map;

public void mostrarMunicipio(String nome) {
    
    
    mapView = new MapView();
    mapView.setOnMapReadyHandler(new MapReadyHandler() {
        @Override
        public void onMapReady(MapStatus status) {

            Map map = mapView.getMap();
            map.setZoom(12.0);
            GeocoderRequest request = new GeocoderRequest(map);
            request.setAddress(nome+", BR");

            mapView.getServices().getGeocoder().geocode(request, new GeocoderCallback(map) {
                @Override
                public void onComplete(GeocoderResult[] result, GeocoderStatus status) {

                    map.setCenter(result[0].getGeometry().getLocation());
                    Marker marker = new Marker(map);
                    marker.setPosition(result[0].getGeometry().getLocation());

                }
            });

        }
    });
    visor.add(mapView, BorderLayout.CENTER);
}

public Principal2() {
    initComponents();
    mostrarMunicipio("Natal");
    
    
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    painel = new javax.swing.JPanel();
    opcao = new javax.swing.JComboBox<>();
    jButton1 = new javax.swing.JButton();
    painel2 = new javax.swing.JPanel();
    visor = new javax.swing.JPanel();
    painelRolagem = new javax.swing.JScrollPane();
    painecomGuias = new javax.swing.JTabbedPane();
    infoGerais = new javax.swing.JPanel();
    galeria = new javax.swing.JPanel();
    dados = new javax.swing.JPanel();
    barramenu = new javax.swing.JMenuBar();
    meunSobre = new javax.swing.JMenu();
    jMenuItem3 = new javax.swing.JMenuItem();
    jMenu1 = new javax.swing.JMenu();
    jMenuItem1 = new javax.swing.JMenuItem();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("Trabalho PEOO - Geografia");
    setAlwaysOnTop(true);
    setBackground(new java.awt.Color(51, 51, 51));

    painel.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
    painel.setPreferredSize(new java.awt.Dimension(300, 500));
    painel.setLayout(new java.awt.BorderLayout());

    opcao.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Selecione um município", "Caicó ", "Cruzeta", "Equador", "Ipueira", "Jardim de Piranhas", "Jardim do Seridó ", "Jucurutu", "Ouro branco", "Parelhas", "Santana do Seridó ", "São Fernando", "São João do Sabugi", "Serra Negra do Norte", "São José do Seridó ", "Timbaúba dos Batistas", " " }));
    painel.add(opcao, java.awt.BorderLayout.PAGE_START);

    jButton1.setText("jButton1");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            mostraMapa(evt);
        }
    });
    painel.add(jButton1, java.awt.BorderLayout.CENTER);

    getContentPane().add(painel, java.awt.BorderLayout.LINE_START);

    visor.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 5));
    visor.setAlignmentX(10.0F);
    visor.setAlignmentY(10.0F);
    visor.setLayout(new java.awt.BorderLayout());

    painelRolagem.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

    painecomGuias.setForeground(new java.awt.Color(0, 0, 0));
    painecomGuias.setAlignmentX(10.0F);
    painecomGuias.setAlignmentY(10.0F);

    javax.swing.GroupLayout infoGeraisLayout = new javax.swing.GroupLayout(infoGerais);
    infoGerais.setLayout(infoGeraisLayout);
    infoGeraisLayout.setHorizontalGroup(
        infoGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 589, Short.MAX_VALUE)
    );
    infoGeraisLayout.setVerticalGroup(
        infoGeraisLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 516, Short.MAX_VALUE)
    );

    painecomGuias.addTab("Inofrmações Gerais", infoGerais);

    javax.swing.GroupLayout galeriaLayout = new javax.swing.GroupLayout(galeria);
    galeria.setLayout(galeriaLayout);
    galeriaLayout.setHorizontalGroup(
        galeriaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 589, Short.MAX_VALUE)
    );
    galeriaLayout.setVerticalGroup(
        galeriaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 516, Short.MAX_VALUE)
    );

    painecomGuias.addTab("Galeria", galeria);

    javax.swing.GroupLayout dadosLayout = new javax.swing.GroupLayout(dados);
    dados.setLayout(dadosLayout);
    dadosLayout.setHorizontalGroup(
        dadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 589, Short.MAX_VALUE)
    );
    dadosLayout.setVerticalGroup(
        dadosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 516, Short.MAX_VALUE)
    );

    painecomGuias.addTab("Dados", dados);

    painelRolagem.setViewportView(painecomGuias);

    javax.swing.GroupLayout painel2Layout = new javax.swing.GroupLayout(painel2);
    painel2.setLayout(painel2Layout);
    painel2Layout.setHorizontalGroup(
        painel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painel2Layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(painel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                .addComponent(painelRolagem)
                .addComponent(visor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addContainerGap())
    );
    painel2Layout.setVerticalGroup(
        painel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(painel2Layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(visor, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(painelRolagem, javax.swing.GroupLayout.DEFAULT_SIZE, 128, Short.MAX_VALUE)
            .addContainerGap())
    );

    getContentPane().add(painel2, java.awt.BorderLayout.CENTER);

    barramenu.setBackground(new java.awt.Color(51, 51, 51));
    barramenu.setForeground(new java.awt.Color(255, 255, 255));

    meunSobre.setForeground(new java.awt.Color(255, 255, 255));
    meunSobre.setText("Sobre");

    jMenuItem3.setText("Especifícações do Software");
    meunSobre.add(jMenuItem3);

    barramenu.add(meunSobre);

    jMenu1.setForeground(new java.awt.Color(255, 255, 255));
    jMenu1.setText("Sair");

    jMenuItem1.setText("Sair");
    jMenu1.add(jMenuItem1);

    barramenu.add(jMenu1);

    setJMenuBar(barramenu);

    setSize(new java.awt.Dimension(922, 558));
    setLocationRelativeTo(null);
}// </editor-fold>                        

private void mostraMapa(java.awt.event.ActionEvent evt) {                            
 
}                           

public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Principal2().setVisible(true);
        }
    });

}

// Variables declaration - do not modify                     
private javax.swing.JMenuBar barramenu;
private javax.swing.JPanel dados;
private javax.swing.JPanel galeria;
private javax.swing.JPanel infoGerais;
private javax.swing.JButton jButton1;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenu meunSobre;
private javax.swing.JComboBox<String> opcao;
private javax.swing.JTabbedPane painecomGuias;
private javax.swing.JPanel painel;
private javax.swing.JPanel painel2;
private javax.swing.JScrollPane painelRolagem;
private javax.swing.JPanel visor;
// End of variables declaration

}Texto pré-formatado

3 Respostas

Jothar_Aleksander

Pelo código, public Principal2 é o construtor da classe Principal2. De qual classe está tentando acessar a classe Principal2? O construtor só pode ser chamado quando da instanciação de um objeto da classe. O que você pode fazer é, caso o construtor aceite parâmetros (que não é o caso), passar as novas ‘configurações’ por meio dos parâmetros. Se estiver tentando acessar o método mostrarMunicipio(String nome), basta fazê-lo. Se estiver em uma outra classe, por exemplo, Principal3:

public class Principal3 {
	public static void main(String[] args){
		Principal2 principal2 = new Principal2();
		principal2.mostrarMunicipio("Loanda");
	}
}

No dê mais detalhes. Está meio confuso o código. Indique cada classe envolvida, separadamente.

A

existe apenas uma classe no pacote, chamada Principal2 que está herdando de javax.swing.JFrame, Dentro dessa classe existe um método mostrarMunicípio() que recebe o nome do município como parâmetro. no construtor “public Principal2()” tem duas ações dentro dele: um é o initComponents(); e o outro é o mostrarMunicipio(“Natal”);

O que eu to querendo fazer é colocar dentro do código da ação de um botão na interface, chamar o método mostrarMunicipio() e assim ser exibido outro município ao clicar no botão.

Jothar_Aleksander

Esses municípios vêm de onde? Uma lista, digitado pelo usuário? Se o método está dentro da classe, então qualquer objeto da classe tem necessariamente acesso ao método.

Criado 21 de setembro de 2019
Ultima resposta 25 de set. de 2019
Respostas 3
Participantes 2