Hallo,
ich habe folgendes Problem:
Ich habe ein Programm geschrieben was eine log Datei einlesen kann. Die Log datei hat IP Adressen und den dazugehörigen Teil auf dem der User gesurft hat.
Die IP-Adressen werden in ein JTree eingefügt ( linke Seite des Fensters ) und der Inhalt auf die Rechte Seite in einer JText Area.
zusätzlich habe ich noch ein TextFeld gemacht um auch direkt die IP Adresse dort eingeben zu können.
Bsp.:
-----------------------------------------
| 117.35.12.3 | SerachButton
-----------------------------------------
JTree TextFeld
IP-Adressen
117.35.12.30 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
118.35.12.31 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
119.35.12.88 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
111.35.12.32 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
114.35.12.93 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
115.35.12.85 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
116.35.12.31 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
118.35.12.67 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
119.35.12.49 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
110.35.12.32 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
------------------------------------------------------------------------------------------------
- wenn ich nun eine IP Adresse anklicke, erscheint rechts der Inhalt
- wenn ich nun eine weitere IP Adresse anklicke, bleibt der Rest des alten Inhalts weiterhin bestehen
- auch der JTree erscheint dann lückenhaft
Wie kann ich realisieren, dass beide Seiten aktualisiert werden sobald ich auf den Baum klicke oder den Seach Button drücke?
Mein Code bisher:
ich habe folgendes Problem:
Ich habe ein Programm geschrieben was eine log Datei einlesen kann. Die Log datei hat IP Adressen und den dazugehörigen Teil auf dem der User gesurft hat.
Die IP-Adressen werden in ein JTree eingefügt ( linke Seite des Fensters ) und der Inhalt auf die Rechte Seite in einer JText Area.
zusätzlich habe ich noch ein TextFeld gemacht um auch direkt die IP Adresse dort eingeben zu können.
Bsp.:
-----------------------------------------
| 117.35.12.3 | SerachButton
-----------------------------------------
JTree TextFeld
IP-Adressen
117.35.12.30 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
118.35.12.31 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
119.35.12.88 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
111.35.12.32 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
114.35.12.93 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
115.35.12.85 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
116.35.12.31 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
118.35.12.67 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
119.35.12.49 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
110.35.12.32 | sdkjfhksjckjsdvkjsdvkjsd Inhalt der WebSeite
------------------------------------------------------------------------------------------------
- wenn ich nun eine IP Adresse anklicke, erscheint rechts der Inhalt
- wenn ich nun eine weitere IP Adresse anklicke, bleibt der Rest des alten Inhalts weiterhin bestehen
- auch der JTree erscheint dann lückenhaft
Wie kann ich realisieren, dass beide Seiten aktualisiert werden sobald ich auf den Baum klicke oder den Seach Button drücke?
Mein Code bisher:
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
public class NewJFrame extends javax.swing.JFrame {
private JMenuBar MenuLeiste;
private JTextField jTextField1;
private JMenu fileMenu1;
private JMenuItem ExitMenuItem1;
private JButton SearchButton1;
private JLabel chooseLabel1;
private JMenu fileMenue;
private JSplitPane jSplitPane1;
private JScrollPane jScrollPane1;
private JScrollPane jScrollPane2;
private JMenuItem exitMenuItem1;
private JSeparator jSeparator1;
private JMenuItem openMenuItem1;
private JTree jTree1;
private String ip = "";
private Scanner s;
private FileWriter fstream;
private BufferedWriter out;
private Matcher mat = null;
private static final long serialVersionUID = 1L;
static String PATH = "d:\\Test\\AD_weblog.log";
static String OUTFILE = "d:\\Test\\TestWrite.txt";
static String suchwort = "145.254.32.119";
public static void main(String[] args) throws FileNotFoundException,
IOException {
NewJFrame inst = new NewJFrame("");
inst.setVisible(true);
inst.pack();
inst.setSize(793, 646);
}
public NewJFrame(String ip) throws FileNotFoundException, IOException {
super();
this.ip = ip;
initGUI(ip);
}
private void initGUI(String ip) throws FileNotFoundException, IOException {
this.s = new Scanner(new File(PATH));
this.fstream = new FileWriter(OUTFILE);
this.out = new BufferedWriter(fstream);
setTitle("Search for IP Address in LogFiles");
this.setLayout(null);
try {
// Close window
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
{
jTextField1 = new JTextField();
getContentPane().add(jTextField1);
jTextField1.setText("");
jTextField1.setBounds(7, 7, 462, 28);
}
{
chooseLabel1 = new JLabel();
getContentPane().add(chooseLabel1);
chooseLabel1.setText("Choose the IP Address");
chooseLabel1.setBounds(476, 7, 130, 28);
}
{
SearchButton1 = new JButton();
getContentPane().add(SearchButton1);
SearchButton1.setText("Search");
SearchButton1.setBounds(623, 7, 133, 28);
SearchButton1.addActionListener(new Ereignis());
}
{
jSplitPane1 = new JSplitPane();
getContentPane().add(jSplitPane1);
jSplitPane1.setBounds(7, 42, 770, 539);
{
JTextArea text = new JTextArea();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("IPAdressen");
String ipAddress = "";
String tmp = "";
String zweiterTeil = "";
while (s.hasNextLine()) {
String str = s.nextLine();
//if (str.startsWith(suchwort)) {
if (str.startsWith(ip)) {
// Ausgabe von IP+Seite
//System.out.println(str);
// Daten in Datei schreiben
//out.write(str);
//out.newLine();
//Füllen der TextArea
//jTextArea1.setText("sdlkjskdlvnlsdknvlksdnvl");
//text.append(str);
//text.append("\n");
//2.Teil in TexArea fügen
zweiterTeil = str.split("(\\d+)(\\.\\d+){3}")[1];
text.append(zweiterTeil);
text.append("\n");
//text.setLineWrap(false); // Zeilenumbruch
mat = Pattern.compile("(\\d+)(\\.\\d+){3}")
.matcher(str);
while (mat.find()) {
ipAddress = mat.group(0).toString(); // temporärer string
if (!tmp.equals(ipAddress)) {
root.add(new DefaultMutableTreeNode(
ipAddress));
}
}
tmp = ipAddress;
}
}
jScrollPane1 = new JScrollPane(text);
jSplitPane1.add(jScrollPane1, JSplitPane.RIGHT);
jTree1 = new JTree(root);
jTree1.getSelectionModel().addTreeSelectionListener(
new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
TreePath path = e.getNewLeadSelectionPath();
TreeNode node = (TreeNode) path.getLastPathComponent();
String testNode = node.toString();
try {
if (testNode.equals("IPAdressen")) {
//System.out.print("ROOT");
initGUI("");
} else {
//System.out.print("Node");
initGUI(testNode);
}
} catch (Exception e1) {
}
System.out.println(testNode);
}
});
jScrollPane2 = new JScrollPane(jTree1);
jSplitPane1.add(jScrollPane2, JSplitPane.LEFT);
// Grösse der linken Seite einstellen
jSplitPane1.setDividerLocation(0.2);
}
}
{
MenuLeiste = new JMenuBar();
setJMenuBar(MenuLeiste);
MenuLeiste.setPreferredSize(new java.awt.Dimension(785, 27));
{
fileMenu1 = new JMenu();
MenuLeiste.add(fileMenu1);
fileMenu1.setText("File");
{
openMenuItem1 = new JMenuItem();
fileMenu1.add(openMenuItem1);
openMenuItem1.setText("open");
openMenuItem1.addActionListener(new Ereignis());
}
{
jSeparator1 = new JSeparator();
fileMenu1.add(jSeparator1);
}
{
exitMenuItem1 = new JMenuItem();
fileMenu1.add(exitMenuItem1);
exitMenuItem1.setText("exit");
exitMenuItem1.addActionListener(new Ereignis());
}
}
}
//pack();
setVisible(true);
setSize(793, 646);
} catch (Exception e) {
e.printStackTrace();
}
//BufferedWriter schliessen
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Scanner schliessen
s.close();
}
public class Ereignis implements ActionListener {
//Create a file chooser
final JFileChooser fc = new JFileChooser("D:/Test");
public void actionPerformed(ActionEvent e) {
//Handle open button action.
if (e.getSource() == openMenuItem1) {
int returnVal = fc.showOpenDialog(NewJFrame.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
System.out.println(file.getAbsolutePath());
} else
System.out.println("Auswahl abgebrochen");
//System.exit(1);
}
if (e.getSource() == exitMenuItem1) {
//Close window
dispose();
System.exit(0);
}
if (e.getSource() == SearchButton1) {
ip = jTextField1.getText();
System.out.println(ip);
try {
initGUI(ip);
} catch (Exception e1) {
}
}
}
}
}