Also ich bin jetzt noch nicht so erfahren in Java. Ich programmiere grade ein Schreibprogramm.
Das habe ich bis jetzt:
Nun ja, grade bin ich dabei Fett und Kursiv in mein Schreibprogramm zu "machen"(bzw. zu programmieren) Ich würde es aber gerne so machen, das nur der markierte Text fett bzw. kursiv zu schreiben. Wie mache ich das am besten?
Das habe ich bis jetzt:
Java:
package Schreibprogramm;
import java.awt.BorderLayout;
import java.awt.Desktop;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class main {
ActionListener listener = new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
int mode = 0;
if (bold.isSelected()) mode += Font.BOLD;
if (italic.isSelected()) mode += Font.ITALIC;
textArea.setFont(new Font("Serif", mode, 13));
}
};
JTextArea textArea;
JButton save;
JButton load;
JCheckBox bold;
JCheckBox italic;
void initUI() {
JFrame frame = new JFrame("Schreibprogramm");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
textArea = new JTextArea(24, 80);
save = new JButton("Speichern");
save.addActionListener(e -> saveToFile());
load = new JButton("Öffnen");
load.addActionListener(e -> load());
bold = new JCheckBox("<html><b>Fett</b></html>");
bold.addActionListener(listener);
italic = new JCheckBox("<html><i>Kursiv</i></html>");
italic.addActionListener(listener);
frame.add(new JScrollPane(textArea));
JPanel buttonPanel = new JPanel();
buttonPanel.add(save);
buttonPanel.add(load);
buttonPanel.add(bold);
buttonPanel.add(italic);
frame.add(buttonPanel, BorderLayout.SOUTH);
frame.setSize(500, 400);
frame.setVisible(true);
}
protected void load() {
final JFileChooser fc = new JFileChooser();
int returnVal = fc.showOpenDialog(load);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
showText(file);
}
}
private void showText(File file){
StringBuffer buf = new StringBuffer();
if(file.exists( )){
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = "";
while((line = reader.readLine( )) != null){
buf.append(line+"\n");
}
reader.close( );
}
catch (FileNotFoundException e) {
e.printStackTrace( );
}
catch (IOException e) {
e.printStackTrace( );
}
}
this.textArea.setText(buf.toString( ));
}
protected void save() {
final JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(save);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
saveText(file);
}
}
private void saveText(File file) {
try {
FileWriter writer = new FileWriter(file);
String text = this.textArea.getText( );
writer.write(text);
writer.flush( );
writer.close( );
}
catch (IOException e) {
e.printStackTrace( );
}
}
protected void saveToFile() {
JFileChooser fileChooser = new JFileChooser();
int retval = fileChooser.showSaveDialog(save);
if (retval == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();
if (file == null) {
return;
}
if (!file.getName().toLowerCase().endsWith(".nico")) {
file = new File(file.getParentFile(), file.getName() + ".nico");
}
try {
textArea.write(new OutputStreamWriter(new FileOutputStream(file),
"utf-8"));
Desktop.getDesktop().open(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new test1().initUI();
}
}