Olá pessoal, este é o meu primeiro tópico, agradeço quem puder ajudar.
Estou fazendo um editor de texto bem simples pra treinar swing, coloquei um botão negrito e outro itálico, porém quando seleciono o botão negrito por exemplo, tudo o que está escrito fica negrito, mas a intensão é que apenas o que for digitado após o botão ser clicado fique negrito, como faço isso? Por enquanto o código está assim:
import java.awt.*;
import java.awt.event.*;
import java.awt.font.TextLayout.CaretPolicy;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.*;
import javax.swing.event.CaretEvent;
import javax.swing.text.Caret;
import com.sun.org.apache.xpath.internal.functions.Function;
public class GravarArqJDialog extends JFrame implements ActionListener, MouseListener {
JButton abrir, gravar, limpar;
JToggleButton negrito, italico;
JLabel l1, l2;
JTextField tfTexto;
TextArea txArea1;
JPanel panel1;
FileDialog fdAbrir, fdSalvar;
int negr=0, italic=0;
public static void main(String[] args)
{
JFrame janela = new GravarArqJDialog();
janela.setUndecorated(true);
janela.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setVisible(true);
}
GravarArqJDialog()
{
setTitle("Cadastro");
setBounds(250, 50, 500, 300);
setResizable(false);
setBackground(new Color(150, 150, 150));
setLayout(new FlowLayout());
l1 = new JLabel("Texto a ser editado:");
l1.setForeground(Color.black);
l2 = new JLabel("Status");
l2.setForeground(Color.black);
abrir = new JButton("Abrir");
gravar = new JButton("Gravar");
limpar = new JButton("Limpar");
negrito = new JToggleButton("N");
italico = new JToggleButton("I");
negrito.setBackground(Color.lightGray);
italico.setBackground(Color.lightGray);
negrito.addMouseListener(this);
italico.addMouseListener(this);
abrir.addActionListener(this);
gravar.addActionListener(this);
limpar.addActionListener(this);
tfTexto = new JTextField(35);
tfTexto.setForeground(Color.red);
tfTexto.setEditable(false);
panel1 = new JPanel();
panel1.setLayout(new FlowLayout());
panel1.add(l2);
panel1.add(tfTexto);
txArea1 = new TextArea(8, 60);
fdAbrir = new FileDialog(this, "Abrir arquivo", FileDialog.LOAD);
fdSalvar = new FileDialog(this, "Salvar arquivo", FileDialog.SAVE);
add(l1);
add(txArea1);
add(gravar);
add(abrir);
add(limpar);
add(negrito);
add(italico);
add(panel1);
}
@Override
public void actionPerformed(ActionEvent e)
{
boolean ligado = false;
String nomeArq;
if (e.getSource() == limpar)
{
txArea1.setText("");
tfTexto.setText("");
txArea1.requestFocus();
}
if (e.getSource() == gravar)
{
try
{
fdSalvar.setVisible(true);
if (fdSalvar.getFile() == null)
return;
nomeArq = fdSalvar.getDirectory() + fdSalvar.getFile();
FileWriter out = new FileWriter(nomeArq);
out.write(txArea1.getText());
out.close();
tfTexto.setText("Arquivo gravado com sucesso!");
} catch (IOException erro)
{
tfTexto.setText("Erro ao gravar arquivo");
}
}
if (e.getSource() == abrir)
{
try
{
fdAbrir.setVisible(true);
if (fdAbrir.getFile() == null)
return;
nomeArq = fdAbrir.getDirectory() + fdAbrir.getFile();
FileReader in = new FileReader(nomeArq);
String s = "";
int i = in.read();
while (i != -1)
{
s = s + (char) i;
i = in.read();
}
txArea1.setText(s);
in.close();
tfTexto.setText("Arquivo aberto com sucesso!");
} catch (IOException erro)
{
tfTexto.setText("Erro ao abrir arquivo");
}
}
}
@Override
public void mouseClicked(MouseEvent e)
{
if(e.getSource()==negrito)
{
if(negrito.isSelected()==true)
negr = Font.BOLD;
else
negr = Font.PLAIN;
}
if(e.getSource()==italico)
{
if(italico.isSelected()==true)
italic = Font.ITALIC;
else
italic = Font.PLAIN;
}
txArea1.setFont(new Font("Arial",negr+italic,14));
txArea1.requestFocus();
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e)
{
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
}
Muito obrigado!
Abços