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()之后,但它会被文本错误(就像它创建一个循环,将大量文本放在一起)。
答案 0 :(得分:0)
这篇文章是真正的救星:
Why isn't setText updating the JLabel?
基本上,您所要做的就是:
label.paintImmediately(label.getVisibleRect());
在settext()之后。
Java摇摆令人困惑和恼人。我真的很喜欢使用android更好^^