2013-03-22 5 views
0

Извините, если это было отредактировано в другом месте, возможно, я просто ищу неправильные теги.Java Formatter append method in anon ActionListener

Я хочу создать файл журнала различных переменных с использованием анонимного внутреннего класса, реализующего ActionListener. Это будет прикреплено к JButton.

Использование Formatter дает мне именно то, что мне нужно в строке, но я хочу сохранить все предыдущие журналы этого события (я не забочусь о том, было ли это до или после последней записи).

После того, как я использовал различные методы для удара по стене, я обнаружил, что некоторые серфинга этого сайта и другие вы можете сделать это с помощью метода append в конструкторе с Formatter.

  • Возможно ли использовать добавление во внутреннем классе с помощью Formatter?

  • Если нет, можете ли вы предложить другого Java-писателя, который все равно удовлетворит мои потребности? Я все еще новичок, поэтому чем меньше, тем лучше.

  • Если это возможно во внутреннем классе и с форматированием без каких-либо дополнительных импортных/упаковок , пожалуйста, дайте нам подсказку или ссылку, и я продолжу поиск.

Я приложил небольшой компилируемый пример кода, который может помочь, если кто-то заинтересован в имея игру.

спасибо, weekendwarrior84

import java.awt.FlowLayout; 
import java.awt.TextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Formatter; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class TestProgram extends JFrame{ 

private FlowLayout lay; 

public TestProgram(){ 

super("Sample Program"); 
    lay = new FlowLayout(); 
    setLayout(lay); 

    final JLabel label1 = new JLabel("Label One");  
    add(label1);   
    final TextField field1 = new TextField(8);  
    add(field1);   
    final JLabel label2 = new JLabel("Exception Label");  
    add(label2);   
    final JButton button1 = new JButton 
("Log Data");       
    add(button1); 
    button1.addActionListener(
     new ActionListener(){ 
      public void actionPerformed(ActionEvent e){ 
       if(button1.isSelected()); 
       try{ 
       Formatter fm = new Formatter("C:\\Test\\testlog.txt");                
       fm.format("%s%s%s%s", "Sample Value: ",label1.getText(), 
         " Sample Value2: ",field1.getText()); 
       fm.close(); 
        }                  
        catch(Exception ee){      
        label2.setText("Make Sure Path exists, C:\\Test\\testlog.txt");     
        } 
      } 
    } 
);   
} 
} 

Основные

import javax.swing.JFrame; 

public class TestMain{ 

public static void main (String[] args){ 

    TestProgram ts = new TestProgram(); 

    ts.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ts.setSize(1200,500); 
    ts.setVisible(true); 
} 
} 

ответ

0

Как и обещал, он по-прежнему является WIP, но он решил мою текущую проблему. Это было главным образом путаницей в том, что было возможно с писателями, и верой, которой я требовал форматтера.

if(button1.isSelected());    
      String path = "C:\\Test\\testlog.txt"; 
      String mylog = "\r\n"+"Sample Value: " + label1.getText()+" Sample Value2: "+field1.getText(); 
      File file = new File(path); 
      FileWriter writer; 

      try { 
      writer = new FileWriter(file,true);    
      BufferedWriter buffer = new BufferedWriter(writer); 
      writer.append(mylog);        
      buffer.close(); 

      }catch (IOException e1) {       
      label2.setText("Make Sure Path exists, C:\\Test\\testlog.txt"); 
0

Есть ли конкретная причина, почему вы хотите сделать это с помощью Formatter? Он читается так, как будто вы хотите сделать очень простой журнал, для которого есть множество реализаций на Java, чтобы сделать для вас грязную работу. Даже для java.util.logging package было бы достаточно добавить логические строки в файл при нажатии кнопки. Я лично предложил logback, но это только предпочтение.

Если вы действительно настаиваете на выполнении операций с файлами, вы можете ответить на ваши вопросы this question. Форматирование может быть выполнено только с классом MessageFormat, прежде чем записывать полную строку в файл.

+0

sheltem, Спасибо за ответ, мне удалось придумать ответ во время ожидания. Моя проблема заключалась в простой неопытности с java и другими авторами. – weekendwarrior84

+0

То, что я выпустил с помощью форматирования, было так же легко передано как строковая переменная с помощью метода добавления файлов FileWriters. Я сейчас посмотрю на журнал, и после 8-часового периода я поставил свой ответ для потомков. – weekendwarrior84