Pessoal, estou desenvolvendo um “fórum” em JavaFX e há uma aba específica para mostrar o conteúdo de um post. Porém, no método que fiz para obter todas as informações do post, há muitas coisas e quero que apareça apenas o conteúdo. Como posso fazer isso?
Classe Post:
package matforum.models;
public class Post {
private String titulo;
private String descricao;
private String conteudo;
private String referencia;
private String autor;
private String dataPostagem;
public Post(String titulo, String descricao, String conteudo, String referencia, String autor, String dataPostagem) {
this.titulo = titulo;
this.descricao = descricao;
this.conteudo = conteudo;
this.referencia = referencia;
this.autor = autor;
this.dataPostagem = dataPostagem;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getConteudo() {
return conteudo;
}
public void setConteudo(String conteudo) {
this.conteudo = conteudo;
}
public String getReferencia() {
return referencia;
}
public void setReferencia(String referencia) {
this.referencia = referencia;
}
public String getAutor() {
return autor;
}
public void setAutor(String autor) {
this.autor = autor;
}
public String getDataPostagem() {
return dataPostagem;
}
public void setDataPostagem(String dataPostagem) {
this.dataPostagem = dataPostagem;
}
@Override
public String toString() {
return "\nTitulo: " + titulo + "\nDescricao: " + descricao +
"\nConteudo: " + conteudo + "\nReferencia: " + referencia +
"\nAutor: " + autor + "\nData: " + dataPostagem +"\n";
}
}
Como está fazendo a exibição? Mostre o código de onde exibe o post nessa aba.
Pelo código da sua classe Post, seria o caso de chamar o metodo getConteudo(), que suponho ser o conteúdo que você deseja.
Se não é isso, seja mais claro na dúvida.
Abraço.
Eu pensei em fazer isso mas quando tento usar o getConteudo() ele simplesmente diz que é inválido - não existe. Irei deixar o código aqui (ele não tá bem estruturado, faltam algumas coisas e, a principio, ele iria carregar o conteúdo ao clicar no botão “perfil” - apenas para teste). O código:
FXMLPostagemController:
package matforum;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import static matforum.FXMLCriarPostController.postagens;
/**
* FXML Controller class
*
* @author conta
*/
public class FXMLPostagemController implements Initializable {
@FXML
private Button btnSair;
@FXML
private Button btnVoltar;
@FXML
private Label lblTituloPost;
@FXML
private TextArea txtConteudoPost;
@FXML
private Label lblData;
@FXML
private Label lblAutor;
@FXML
private Button btnPerfil;
@FXML
private Label lblPerfilIndisponivel;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
txtConteudoPost.setWrapText(true);
}
@FXML
private void clickPerfil(ActionEvent event) {
lblPerfilIndisponivel.setOpacity(1);
txtConteudoPost.setText(postagens.getConteudo());
}
@FXML
private void clickSair(ActionEvent event) {
MATForum.mudarTela("inicio");
FXMLTelaInicialController.logado = false;
}
@FXML
private void clickVoltar(ActionEvent event) {
if(FXMLTelaInicialController.logado == true){
MATForum.mudarTela("principal");
}else{
MATForum.mudarTela("inicio");
}
}
}
Onde está a declaração e a inicialização da variável postagens?
postagens é o ArrayList que está coletando todas as informações de um post. Irei deixar aqui a classe que ela está.
FXMLCriarPostController:
package matforum;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import static java.util.concurrent.TimeUnit.SECONDS;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.ImageView;
import matforum.models.Post;
/**
* FXML Controller class
*
* @author conta
*/
public class FXMLCriarPostController implements Initializable {
@FXML
private Button btnSair;
@FXML
private Button btnVoltar;
@FXML
private TextField txtTitulo;
@FXML
private TextField txtDescricao;
@FXML
private TextArea txtConteudo;
@FXML
private TextField txtReferencia;
@FXML
private TextField txtAutor;
@FXML
private TextField txtData;
@FXML
private Button btnEnviar;
@FXML
private Button btnPerfil;
@FXML
private Label lblPerfilIndisponivel;
public static String titulo = null;
public static String descricao = null;
public static String conteudo = null;
public static String referencia = null;
public static String autor = null;
public static String dataPostagem = null;
public static ArrayList<Post> postagens = new ArrayList();
@FXML
private Button btnAutor;
@FXML
private Button btnData;
@FXML
private ImageView imagemConfirmado;
@FXML
private Label lblConfirmado;
@FXML
private ImageView imagemErro;
@FXML
private Label lblErroTituloVazio;
@FXML
private Label lblErroDescricaoVazia;
@FXML
private Label lblErroConteudoVazio;
@FXML
private Label lblErroAutorVazio;
@FXML
private Label lblErroDataVazia;
@FXML
private Label lblErroPostVazio;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
txtConteudo.setWrapText(true);
}
@FXML
private void clickSair(ActionEvent event) {
MATForum.mudarTela("inicio");
limparDados();
FXMLTelaInicialController.logado = false;
}
@FXML
private void clickVoltar(ActionEvent event) {
MATForum.mudarTela("principal");
limparDados();
}
@FXML
private void clickEnviar(ActionEvent event) {
criarPost();
}
@FXML
private void clickPerfil(ActionEvent event) {
contagemPerfilIndisponivel();
}
@FXML
private void clickAutor(ActionEvent event) {
carregarAutor();
}
@FXML
private void clickData(ActionEvent event) {
coletarData();
}
public void coletarData(){
LocalDateTime dataHoje = LocalDateTime.now();
DateTimeFormatter formatterData = DateTimeFormatter.ofPattern("dd/MM/uuuu");
String dataFormatada = formatterData.format(dataHoje);
System.out.println(dataFormatada);
txtData.setEditable(true);
txtData.setText(dataFormatada);
txtData.setEditable(false);
}
public void criarPost(){
titulo = txtTitulo.getText();
descricao = txtDescricao.getText();
conteudo = txtConteudo.getText();
referencia = txtReferencia.getText();
autor = txtAutor.getText();
dataPostagem = txtData.getText();
if("".trim().equals(referencia)){
referencia = "Nenhuma";
}
if("".trim().equals(titulo) && "".trim().equals(descricao) && "".trim().equals(conteudo) &&
"".trim().equals(autor) && "".trim().equals(dataPostagem)){
imagemErro.setOpacity(1);
lblErroPostVazio.setOpacity(1);
contagemErros();
}else if("".trim().equals(titulo)){
imagemErro.setOpacity(1);
lblErroTituloVazio.setOpacity(1);
contagemErros();
}else if("".trim().equals(descricao)){
imagemErro.setOpacity(1);
lblErroDescricaoVazia.setOpacity(1);
contagemErros();
}else if("".trim().equals(conteudo)){
imagemErro.setOpacity(1);
lblErroConteudoVazio.setOpacity(1);
contagemErros();
}else if("".trim().equals(autor)){
imagemErro.setOpacity(1);
lblErroAutorVazio.setOpacity(1);
contagemErros();
}else if("".trim().equals(dataPostagem)){
imagemErro.setOpacity(1);
lblErroDataVazia.setOpacity(1);
contagemErros();
}else{
imagemConfirmado.setOpacity(1);
lblConfirmado.setOpacity(1);
contagemCadastrado();
Post novoPost = new Post(titulo, descricao, conteudo, referencia, autor, dataPostagem);
postagens.add(novoPost);
System.out.println(postagens);
limparDados();
}
}
public void contagemPerfilIndisponivel(){
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final Runnable runnable = new Runnable() {
int countdownStarter = 5;
@Override
public void run() {
lblPerfilIndisponivel.setOpacity(1);
countdownStarter--;
if (countdownStarter < 0) {
lblPerfilIndisponivel.setOpacity(0);
scheduler.shutdown();
}
}
};
scheduler.scheduleAtFixedRate(runnable, 0, 1, SECONDS);
}
public void limparDados(){
txtTitulo.clear();
txtDescricao.clear();
txtConteudo.clear();
txtReferencia.clear();
txtAutor.clear();
txtData.clear();
}
public void carregarAutor(){
txtAutor.setEditable(true);
txtAutor.setText(FXMLTelaInicialController.nomeLogin);
txtAutor.setEditable(false);
}
public void contagemErros(){
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final Runnable runnable = new Runnable() {
int countdownStarter = 5;
@Override
public void run() {
countdownStarter--;
if (countdownStarter < 0) {
imagemErro.setOpacity(0);
lblErroTituloVazio.setOpacity(0);
lblErroDescricaoVazia.setOpacity(0);
lblErroConteudoVazio.setOpacity(0);
lblErroAutorVazio.setOpacity(0);
lblErroDataVazia.setOpacity(0);
lblErroPostVazio.setOpacity(0);
scheduler.shutdown();
}
}
};
scheduler.scheduleAtFixedRate(runnable, 0, 1, SECONDS);
}
public void contagemCadastrado(){
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final Runnable runnable = new Runnable() {
int countdownStarter = 5;
@Override
public void run() {
countdownStarter--;
if (countdownStarter < 0) {
imagemConfirmado.setOpacity(0);
lblConfirmado.setOpacity(0);
scheduler.shutdown();
}
}
};
scheduler.scheduleAtFixedRate(runnable, 0, 1, SECONDS);
}
}
Se postagens é um ArrayList, ele não vai ter o método getConteudo(), que pertence à classe Post. Você precisa pegar o objeto de dentro do ArrayList, para depois pegar o conteúdo. Algo como:
Post postQueQueroExibir = postagens.get(0);
txtConteudoPost.setText(postQueQueroExibir.getConteudo());
No exemplo, está pegando a posição zero (a primeira do ArrayList). Você precisa definir o índice que quer pegar através de outros métodos.
Abraço.
1 curtida