在创建它的类之外调用时,JLabel的setText()不起作用

时间:2015-09-17 18:15:34

标签: java swing jlabel

JLabel的setText()操作可以在JPanel外部调用吗?创建它的类?因为我必须在我创建的Singleton上更改我的JLabel。当我使用setText()函数时,JLabel的text属性被更改(我可以从调试中看到它),但在视觉上它仍然是相同的旧文本。

但是当我从创建JLabel的JPanel内部更改文本时,它可以工作......但我不希望这样。我必须让setText()在JPanel之外工作。我从一个在JPanel结构中创建的Singleton调用它。

包含我的JLabel的类是TelaPrincipal。在它的构造函数中,我通过“setText()”更改了JLabel的文本,它工作得很好:

public TelaPrincipal() {
        setTitle("codefont2file");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 650, 400);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        GridBagLayout gbl_contentPane = new GridBagLayout();
        gbl_contentPane.columnWidths = new int[]{12, 92, 42, 42, 92};
        gbl_contentPane.rowHeights = new int[]{19, 19, 19, 19, 19, 19, 19, 19};
        gbl_contentPane.columnWeights = new double[]{0.2, 1.0, 0.1, 0.1, 0.6};
        gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE, 0.0};
        contentPane.setLayout(gbl_contentPane);

        JLabel TituloTela = DefaultComponentFactory.getInstance().createTitle("CodeFont 2 File");
        TituloTela.setFont(new Font("Tahoma", Font.BOLD, 15));
        TituloTela.setHorizontalAlignment(SwingConstants.CENTER);
        GridBagConstraints gbc_TituloTela = new GridBagConstraints();
        gbc_TituloTela.gridwidth = 7;
        gbc_TituloTela.gridheight = 1;
        gbc_TituloTela.insets = new Insets(0, 0, 5, 5);
        gbc_TituloTela.anchor = GridBagConstraints.NORTH;
        gbc_TituloTela.fill = GridBagConstraints.HORIZONTAL;
        gbc_TituloTela.gridx = 0;
        gbc_TituloTela.gridy = 0;
        contentPane.add(TituloTela, gbc_TituloTela);

        JLabel descricao_software = DefaultComponentFactory.getInstance().createLabel("Bem vindo ao Codefont2File! Escolha seu projeto que converteremos");
        GridBagConstraints gbc_descricao_software = new GridBagConstraints();
        gbc_descricao_software.insets = new Insets(0, 0, 5, 0);
        gbc_descricao_software.gridx = 0;
        gbc_descricao_software.gridy = 1;
        gbc_descricao_software.gridwidth = 8;
        gbc_descricao_software.gridheight = 1;
        contentPane.add(descricao_software, gbc_descricao_software);

        JLabel descricao_software2 = DefaultComponentFactory.getInstance().createLabel("o c\u00F3digo fonte para um \u00FAnico PDF!");
        descricao_software2.setHorizontalAlignment(SwingConstants.CENTER);
        GridBagConstraints gbc_descricao_software2 = new GridBagConstraints();
        gbc_descricao_software2.gridwidth = 8;
        gbc_descricao_software2.gridheight = 1;
        gbc_descricao_software2.insets = new Insets(0, 0, 5, 0);
        gbc_descricao_software2.gridx = 0;
        gbc_descricao_software2.gridy = 2;
        contentPane.add(descricao_software2, gbc_descricao_software2);

        JLabel lblTtulo = DefaultComponentFactory.getInstance().createLabel("T\u00EDtulo:");
        GridBagConstraints gbc_lblTtulo = new GridBagConstraints();
        gbc_lblTtulo.anchor = GridBagConstraints.EAST;
        gbc_lblTtulo.insets = new Insets(0, 0, 5, 5);
        gbc_lblTtulo.gridx = 0;
        gbc_lblTtulo.gridy = 3;
        contentPane.add(lblTtulo, gbc_lblTtulo);

        campo_nome_projeto = new JTextField();
        GridBagConstraints gbc_campo_nome_projeto = new GridBagConstraints();
        gbc_campo_nome_projeto.insets = new Insets(0, 0, 5, 5);
        gbc_campo_nome_projeto.fill = GridBagConstraints.HORIZONTAL;
        gbc_campo_nome_projeto.gridx = 1;
        gbc_campo_nome_projeto.gridy = 3;
        contentPane.add(campo_nome_projeto, gbc_campo_nome_projeto);
        campo_nome_projeto.setColumns(10);

        JButton botaoHintNomeProjeto = new JButton("?");
        botaoHintNomeProjeto.setToolTipText("Nome do seu projeto");
        GridBagConstraints gbc_botaoHintNomeProjeto = new GridBagConstraints();
        gbc_botaoHintNomeProjeto.insets = new Insets(0, 0, 5, 5);
        gbc_botaoHintNomeProjeto.gridx = 2;
        gbc_botaoHintNomeProjeto.gridy = 3;
        contentPane.add(botaoHintNomeProjeto, gbc_botaoHintNomeProjeto);

        JLabel label_diretorio = DefaultComponentFactory.getInstance().createLabel("Diret\u00F3rio:");
        GridBagConstraints gbc_label_diretorio = new GridBagConstraints();
        gbc_label_diretorio.anchor = GridBagConstraints.EAST;
        gbc_label_diretorio.insets = new Insets(0, 0, 5, 5);
        gbc_label_diretorio.gridx = 0;
        gbc_label_diretorio.gridy = 4;
        gbc_label_diretorio.gridwidth = 1;
        gbc_label_diretorio.gridheight = 1;
        contentPane.add(label_diretorio, gbc_label_diretorio);

        campo_preencher_diretorio = new JTextField();
        GridBagConstraints gbc_campo_preencher_diretorio = new GridBagConstraints();
        gbc_campo_preencher_diretorio.insets = new Insets(0, 0, 5, 5);
        gbc_campo_preencher_diretorio.fill = GridBagConstraints.HORIZONTAL;
        gbc_campo_preencher_diretorio.gridx = 1;
        gbc_campo_preencher_diretorio.gridy = 4;
        gbc_campo_preencher_diretorio.gridheight = 1;
        gbc_descricao_software.gridwidth = 1;
        contentPane.add(campo_preencher_diretorio, gbc_campo_preencher_diretorio);
        campo_preencher_diretorio.setColumns(20);

        JButton botao_selecionar_pasta_projeto = new JButton("...");
        botao_selecionar_pasta_projeto.setAction(acaoSelecionarPastaProjeto);
        GridBagConstraints gbc_botao_selecionar_pasta_projeto = new GridBagConstraints();
        gbc_botao_selecionar_pasta_projeto.insets = new Insets(0, 0, 5, 5);
        gbc_botao_selecionar_pasta_projeto.gridx = 2;
        gbc_botao_selecionar_pasta_projeto.gridy = 4;
        gbc_botao_selecionar_pasta_projeto.gridheight = 1;
        contentPane.add(botao_selecionar_pasta_projeto, gbc_botao_selecionar_pasta_projeto);

        JButton botao_explicacao_selecione_diretorio = new JButton("?");
        botao_explicacao_selecione_diretorio.setHorizontalAlignment(SwingConstants.LEFT);
        botao_explicacao_selecione_diretorio.setToolTipText("escolha a pasta raiz do seu projeto");
        GridBagConstraints gbc_botao_explicacao_selecione_diretorio = new GridBagConstraints();
        gbc_botao_explicacao_selecione_diretorio.insets = new Insets(0, 0, 5, 5);
        gbc_botao_explicacao_selecione_diretorio.gridx = 3;
        gbc_botao_explicacao_selecione_diretorio.gridy = 4;
        gbc_botao_explicacao_selecione_diretorio.gridheight = 1;
        contentPane.add(botao_explicacao_selecione_diretorio, gbc_botao_explicacao_selecione_diretorio);

        //PARTE REFERENTE A ADICIONAR EXTENSÃO(ANDREWS)
        JPanel painel_adicionar_extensao = new JPanel();
        TitledBorder tituloPainelExtensoes;
        tituloPainelExtensoes = BorderFactory.createTitledBorder("Extensões");
        painel_adicionar_extensao.setBorder(tituloPainelExtensoes);
        GridBagConstraints gbc_painel_adicionar_extensao = new GridBagConstraints();
        gbc_painel_adicionar_extensao.insets = new Insets(0, 0, 5, 0);
        gbc_painel_adicionar_extensao.anchor = GridBagConstraints.NORTH;
        gbc_painel_adicionar_extensao.gridheight = 7;
        gbc_painel_adicionar_extensao.gridx = 4;
        gbc_painel_adicionar_extensao.gridy = 3;
        gbc_painel_adicionar_extensao.gridwidth = 4;
        contentPane.add(painel_adicionar_extensao, gbc_painel_adicionar_extensao);
        GridBagLayout gbl_painel_adicionar_extensao = new GridBagLayout();
        gbl_painel_adicionar_extensao.columnWidths = new int[]{20, 20, 20, 20};
        gbl_painel_adicionar_extensao.rowHeights = new int[]{20, 20, 20, 20};
        gbl_painel_adicionar_extensao.columnWeights = new double[]{0.4, 0.4, 0.4, 0.4};
        gbl_painel_adicionar_extensao.rowWeights = new double[]{0.4, 0.4, 0.4, 0.4};
        painel_adicionar_extensao.setLayout(gbl_painel_adicionar_extensao);



        textFieldAdicionarExtensoes = new JTextField();
        GridBagConstraints gbc_textFieldAdicionarExtensoes = new GridBagConstraints();
        gbc_textFieldAdicionarExtensoes.gridwidth = 3;
        gbc_textFieldAdicionarExtensoes.insets = new Insets(0, 0, 0, 5);
        gbc_textFieldAdicionarExtensoes.fill = GridBagConstraints.HORIZONTAL;
        gbc_textFieldAdicionarExtensoes.gridx = 0;
        gbc_textFieldAdicionarExtensoes.gridy = 3;
        painel_adicionar_extensao.add(textFieldAdicionarExtensoes, gbc_textFieldAdicionarExtensoes);
        textFieldAdicionarExtensoes.setColumns(10);

        buttonRemoverExtensoes = new JButton("-");
        GridBagConstraints gbc_buttonRemoverExtensoes = new GridBagConstraints();
        gbc_buttonRemoverExtensoes.insets = new Insets(0, 0, 5, 0);
        gbc_buttonRemoverExtensoes.gridx = 3;
        gbc_buttonRemoverExtensoes.gridy = 0;
        painel_adicionar_extensao.add(buttonRemoverExtensoes, gbc_buttonRemoverExtensoes);
        buttonRemoverExtensoes.addActionListener(this);

        this.listModel = new DefaultListModel<String>();
        this.listaExtensoes = new JList<String>(listModel);

        GridBagConstraints gbc_listaExtensoes = new GridBagConstraints();
        gbc_listaExtensoes.gridheight = 3;
        gbc_listaExtensoes.gridwidth = 4;
        gbc_listaExtensoes.insets = new Insets(0, 0, 5, 25);
        gbc_listaExtensoes.gridx = 0;
        gbc_listaExtensoes.gridy = 0;
        listaExtensoes.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        listaExtensoes.setLayoutOrientation(JList.VERTICAL);
        listaExtensoes.setVisibleRowCount(-1);
        JScrollPane scrollPane = new JScrollPane(listaExtensoes);
        scrollPane.setPreferredSize(new Dimension(80, 120));
        scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
        scrollPane.setHorizontalScrollBarPolicy(
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        ListSelectionModel listSelectionModel = listaExtensoes.getSelectionModel();
        listSelectionModel.addListSelectionListener(
                                new ListenerListaExtensoes(buttonRemoverExtensoes,listaExtensoes));

        painel_adicionar_extensao.add(scrollPane, gbc_listaExtensoes);

        buttonAdicionarExtensoes = new JButton("+");
        GridBagConstraints gbc_buttonAdicionarExtensoes = new GridBagConstraints();
        gbc_buttonAdicionarExtensoes.gridx = 3;
        gbc_buttonAdicionarExtensoes.gridy = 3;
        painel_adicionar_extensao.add(buttonAdicionarExtensoes, gbc_buttonAdicionarExtensoes);
        buttonAdicionarExtensoes.addActionListener(this);
        extensoes= new LinkedList<String>();



        JLabel label_autor = DefaultComponentFactory.getInstance().createLabel("Autor:");
        GridBagConstraints gbc_label_autor = new GridBagConstraints();
        gbc_label_autor.anchor = GridBagConstraints.EAST;
        gbc_label_autor.insets = new Insets(0, 0, 5, 5);
        gbc_label_autor.gridx = 0;
        gbc_label_autor.gridy = 5;
        gbc_label_autor.gridheight = 1;
        contentPane.add(label_autor, gbc_label_autor);

        campo_preencher_autor = new JTextField();
        GridBagConstraints gbc_campo_preencher_autor = new GridBagConstraints();
        gbc_campo_preencher_autor.insets = new Insets(0, 0, 5, 5);
        gbc_campo_preencher_autor.fill = GridBagConstraints.HORIZONTAL;
        gbc_campo_preencher_autor.gridx = 1;
        gbc_campo_preencher_autor.gridy = 5;
        gbc_campo_preencher_autor.gridheight = 1;
        contentPane.add(campo_preencher_autor, gbc_campo_preencher_autor);
        campo_preencher_autor.setColumns(20);

        JLabel label_versao = DefaultComponentFactory.getInstance().createLabel("Vers\u00E3o:");
        GridBagConstraints gbc_label_versao = new GridBagConstraints();
        gbc_label_versao.anchor = GridBagConstraints.EAST;
        gbc_label_versao.insets = new Insets(0, 0, 5, 5);
        gbc_label_versao.gridx = 0;
        gbc_label_versao.gridy = 6;
        gbc_label_versao.gridheight = 1;
        contentPane.add(label_versao, gbc_label_versao);

        campo_preencher_versao = new JTextField();
        GridBagConstraints gbc_campo_preencher_versao = new GridBagConstraints();
        gbc_campo_preencher_versao.insets = new Insets(0, 0, 5, 5);
        gbc_campo_preencher_versao.fill = GridBagConstraints.HORIZONTAL;
        gbc_campo_preencher_versao.gridx = 1;
        gbc_campo_preencher_versao.gridy = 6;
        contentPane.add(campo_preencher_versao, gbc_campo_preencher_versao);
        gbc_campo_preencher_versao.gridheight = 1;
        campo_preencher_versao.setColumns(10);

        JLabel label_output = DefaultComponentFactory.getInstance().createLabel("Output:");
        GridBagConstraints gbc_label_output = new GridBagConstraints();
        gbc_label_output.anchor = GridBagConstraints.EAST;
        gbc_label_output.insets = new Insets(0, 0, 5, 5);
        gbc_label_output.gridx = 0;
        gbc_label_output.gridy = 7;
        gbc_label_output.gridheight = 1;
        contentPane.add(label_output, gbc_label_output);

        campo_preencher_output = new JTextField();
        GridBagConstraints gbc_campo_preencher_output = new GridBagConstraints();
        gbc_campo_preencher_output.insets = new Insets(0, 0, 5, 5);
        gbc_campo_preencher_output.fill = GridBagConstraints.HORIZONTAL;
        gbc_campo_preencher_output.gridx = 1;
        gbc_campo_preencher_output.gridy = 7;
        gbc_campo_preencher_output.gridheight = 1;
        contentPane.add(campo_preencher_output, gbc_campo_preencher_output);
        campo_preencher_output.setColumns(10);

        JButton botao_especificar_arquivo_output = new JButton("...");
        botao_especificar_arquivo_output.setAction(acaoEspecificarOutput);
        GridBagConstraints gbc_botao_especificar_arquivo_output = new GridBagConstraints();
        gbc_botao_especificar_arquivo_output.insets = new Insets(0, 0, 5, 5);
        gbc_botao_especificar_arquivo_output.gridx = 2;
        gbc_botao_especificar_arquivo_output.gridy = 7;
        gbc_botao_especificar_arquivo_output.gridheight = 1;
        contentPane.add(botao_especificar_arquivo_output, gbc_botao_especificar_arquivo_output);

        JButton botaoEspecificarPastas = new JButton("Avançado...");
        botaoEspecificarPastas.setAction(acaoBotaoEspecificarPastasArquivosProjeto);
        GridBagConstraints gbc_botaoEspecificarPastas = new GridBagConstraints();
        gbc_botaoEspecificarPastas.gridwidth = 2;
        gbc_botaoEspecificarPastas.insets = new Insets(5, 0, 5, 5);
        gbc_botaoEspecificarPastas.gridx = 1;
        gbc_botaoEspecificarPastas.gridy = 8;
        contentPane.add(botaoEspecificarPastas, gbc_botaoEspecificarPastas);

        JButton botao_explicacao_especificar_pastas = new JButton("?");
        botao_explicacao_especificar_pastas.setToolTipText("especificar que pastas/arquivos de seu projeto você quer no PDF");
        GridBagConstraints gbc_botao_explicacao_especificar_pastas = new GridBagConstraints();
        gbc_botao_explicacao_especificar_pastas.insets = new Insets(5, 0, 5, 5);
        gbc_botao_explicacao_especificar_pastas.gridx = 2;
        gbc_botao_explicacao_especificar_pastas.gridy = 8;
        contentPane.add(botao_explicacao_especificar_pastas, gbc_botao_explicacao_especificar_pastas);

        JButton botaoGerarPDF = new JButton("Gerar PDF");
        botaoGerarPDF.setAction(acaoGerarPdf);
        GridBagConstraints gbc_botaoGerarPDF = new GridBagConstraints();
        gbc_botaoGerarPDF.gridheight = 3;
        gbc_botaoGerarPDF.gridwidth = 2;
        //gbc_botaoGerarPDF.insets = new Insets(0, 0, 0, 5);
        gbc_botaoGerarPDF.gridx = 1;
        gbc_botaoGerarPDF.gridy = 9;
        contentPane.add(botaoGerarPDF, gbc_botaoGerarPDF);

        JProgressBar barraDeProgresso = new JProgressBar();
        GridBagConstraints gbc_JProgressBarUsuarioClicouNoBotaoAvancado = new GridBagConstraints();
        gbc_JProgressBarUsuarioClicouNoBotaoAvancado.gridheight = 1;
        gbc_JProgressBarUsuarioClicouNoBotaoAvancado.gridwidth = 2;
        gbc_JProgressBarUsuarioClicouNoBotaoAvancado.gridx = 1;
        gbc_JProgressBarUsuarioClicouNoBotaoAvancado.gridy = 10;
        contentPane.add(barraDeProgresso, gbc_JProgressBarUsuarioClicouNoBotaoAvancado);
        SingletonBarraDeProgresso.getInstance().setBarraDeProgresso(barraDeProgresso);

        textoBarraDeProgresso = new JLabel("oi meu nome é andrews e eu sou uma pessoa legal como vocês são e eu falo muito não é vamos falar mais um pouco");
        GridBagConstraints gbc_textoBarraDeProgresso = new GridBagConstraints();
        gbc_textoBarraDeProgresso.gridheight = 1;
        gbc_textoBarraDeProgresso.gridwidth = 2;
        gbc_textoBarraDeProgresso.gridx = 1;
        gbc_textoBarraDeProgresso.gridy = 11;
        contentPane.add(textoBarraDeProgresso, gbc_textoBarraDeProgresso);
        textoBarraDeProgresso.setText("oi meu nome é andrews");
        textoBarraDeProgresso.setVisible(true);
        SingletonBarraDeProgresso.getInstance().setTextoBarraDeProgresso(textoBarraDeProgresso);

        SingletonBarraDeProgresso.getInstance().setTelaPrincipal(this);

        extensoes= new LinkedList<String>();

        //vamos verificar se n jah existem extensoes no arquivo .txt que podemos usar
        this.verificarSeJaExistemExtensoesNoTxtParaJaPovoarAGuiComEstasExtensoes();
    }

但是当我试图通过我的Singleton在这个方法上改变它时:

public void inicializarBarraDeProgresso(int valorMaximo, String textoBarra)
    {
        if(barraDeProgresso != null)
        {
            barraDeProgresso.setVisible(true);
            barraDeProgresso.setStringPainted(true);
            barraDeProgresso.setValue(0);
            this.barraDeProgresso.setMaximum(valorMaximo);
            this.barraDeProgresso.setMinimum(0);

            this.textoBarraDeProgresso.setVisible(true);
            this.textoBarraDeProgresso.setText(textoBarra);

        }
    }

在许多类中调用(TelaPrincipal是其中之一,但是还有很多其他类),文本保持不变:“oi meunomeéandrews”

我也试过myJLabel.update(myJLabel.getGraphics());在setText()之后,但它会被文本错误(就像它创建一个循环,将大量文本放在一起)。

1 个答案:

答案 0 :(得分:0)

这篇文章是真正的救星:

Why isn't setText updating the JLabel?

基本上,您所要做的就是:

label.paintImmediately(label.getVisibleRect());

在settext()之后。

Java摇摆令人困惑和恼人。我真的很喜欢使用android更好^^