java linkedlist 记事本_初学JAVA现在编写一个记事本窗体,关于如何实现打开读取文件功能提问...

展开全部

package zhidao;

import java.awt.*;

import java.awt.event.*;

import java.io.File;

import java.text.*;

import java.util.*;

import java.util.concurrent.ConcurrentHashMap;

import javax.swing.*;

import javax.swing.table.*;

public class TokenCategorizer extends JFrame

{

private static final long serialVersionUID = 1L;

private static final String FILE_NAME = "test.txt";

private static final String[] NAMES = { "Integer numbers", "Real numbers", "Other tokens" };

private static String[][] data = null;

private static JList jList = null;

private static JTable tableView = null;

private static LinkedList list = new LinkedList ();

private static String[] strs = new String[NAMES.length];

private static Vector lafVector = new Vector ();

private static Map> tabelDataMap = new ConcurrentHashMap> ();

private static final String PLASTIC3D = "com.jgoodies.looks.plastic.Plastic3DLookAndFeel";

private static final String PLASTIC = "com.jgoodies.looks.plastic.PlasticLookAndFeel";

private static final String PLASTXP = "com.jgoodies.looks.plastic.PlasticXPLookAndFeel";

public TokenCategorizer ( String title )

{

62616964757a686964616fe78988e69d8331333335313830UIManager.installLookAndFeel ("Plastic3D", PLASTIC3D);

UIManager.installLookAndFeel ("Plastic", PLASTIC);

UIManager.installLookAndFeel ("PlasticXP", PLASTXP);

UIManager.LookAndFeelInfo[] installedLafs = UIManager.getInstalledLookAndFeels ();

for ( UIManager.LookAndFeelInfo lafInfo : installedLafs )

{

try

{

Class> lnfClass = Class.forName (lafInfo.getClassName ());

LookAndFeel laf = (LookAndFeel) ( lnfClass.newInstance () );

if (laf.isSupportedLookAndFeel ())

{

String name = lafInfo.getName ();

lafVector.add (new SupportedLaF (name, laf));

}

}

catch (Exception e)

{

continue;

}

}

this.setTitle (title);

}

private static class SupportedLaF

{

String name;

LookAndFeel laf;

SupportedLaF ( String name, LookAndFeel laf )

{

this.name = name;

this.laf = laf;

}

public String toString ()

{

return name;

}

}

private static void createTable ( TokenCategorizer tc )

{

TableModel dataModel = new AbstractTableModel ()

{

private static final long serialVersionUID = 1L;

public int getColumnCount ()

{

return NAMES.length;

}

public int getRowCount ()

{

return data[0].length;

}

public Object getValueAt ( int row, int col )

{

return data[col][row];

}

public String getColumnName ( int column )

{

return NAMES[column];

}

};

tableView = new JTable (dataModel);

tableView.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);

tableView.setRowSelectionInterval (0, 0);

initTableData (tableView, list, strs);

tableView.addMouseListener (new MouseAdapter ()

{

@Override

public void mouseClicked ( MouseEvent e )

{

initTableData (tableView, list, strs);

}

});

JScrollPane scrollpane = new JScrollPane (tableView);

scrollpane.setPreferredSize (new Dimension (500, 400));

tc.add (scrollpane);

}

private static void initTableData ( final JTable tableView, final LinkedList list, final String[] strs )

{

try

{

list.clear ();

int row = tableView.getSelectedRow ();

Vector v = null;

if (null != ( v = tabelDataMap.get (row) ))

{

jList.setListData (v);

}

else

{

for ( int j = 0; j 

{

strs[j] = data[j][row];

}

permutations (list, NAMES.length, strs, 0, -1);

v = new Vector ();

for ( String[] strings : list )

{

v.add (Arrays.toString (strings).replaceAll ("[\\[\\]]", ""));

}

jList.setListData (v);

tabelDataMap.put (row, v);

}

}

catch (Exception e)

{}

}

private static void createList ( TokenCategorizer tc )

{

ListModel dataModel = new AbstractListModel ()

{

private static final long serialVersionUID = 1L;

@Override

public int getSize ()

{

return NAMES.length;

}

@Override

public Object getElementAt ( int index )

{

return NAMES[index];

}

};

jList = new JList (dataModel);

}

private static void initFrame ( TokenCategorizer tc )

{

tc.setLayout (new FlowLayout (FlowLayout.LEFT));

tc.setSize (800, 400);

tc.setLocationRelativeTo (null);

tc.pack ();

tc.setResizable (false);

tc.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

tc.setVisible (true);

}

private static LinkedList permutations ( LinkedList list, int count, String[] array, int ind,

int start, int... indexs )

{

start++;

if (start > count - 1)

{

return null;

}

if (start == 0)

{

indexs = new int[array.length];

}

for ( indexs[start] = 0; indexs[start] 

{

permutations (list, count, array, 0, start, indexs);

if (start == count - 1)

{

String[] temp = new String[count];

for ( int i = count - 1; i >= 0; i-- )

{

temp[start - i] = array[indexs[start - i]];

}

boolean flag = true;

L: for ( int i = 0; i 

{

for ( int j = i + 1; j 

{

if (temp[i].equals (temp[j]))

{

flag = false;

break L;

}

}

}

if (flag)

{

list.add (temp);

}

}

}

return list;

}

private static void initOthers ( final TokenCategorizer tc )

{

JPanel jPanel = new JPanel ();

BoxLayout boxLayout = new BoxLayout (jPanel, BoxLayout.Y_AXIS);

jPanel.setLayout (boxLayout);

jPanel.setPreferredSize (new Dimension (300, 400));

JScrollPane scrollpane = new JScrollPane (jList);

scrollpane.setPreferredSize (new Dimension (300, 400));

jPanel.add (scrollpane);

final JFileChooser chooser = new JFileChooser ();

JPanel bottomPanel = new JPanel ();

JButton jButton = new JButton ("Import File Data");

jButton.addActionListener (new ActionListener ()

{

@Override

public void actionPerformed ( ActionEvent e )

{

int returnVal = chooser.showOpenDialog (tc);

if (returnVal == JFileChooser.APPROVE_OPTION)

{

File file = chooser.getSelectedFile ();

loadFileData (file.getPath ());

SwingUtilities.updateComponentTreeUI (tc);

tabelDataMap.clear ();

tableView.setRowSelectionInterval (0, 0);

initTableData (tableView, list, strs);

}

}

});

bottomPanel.setLayout (new FlowLayout (FlowLayout.LEFT));

final JComboBox jcb = new JComboBox (lafVector);

jcb.addActionListener (new ActionListener ()

{

@Override

public void actionPerformed ( ActionEvent e )

{

SupportedLaF supportedLaF = ( (SupportedLaF) jcb.getSelectedItem () );

LookAndFeel laf = supportedLaF.laf;

try

{

UIManager.setLookAndFeel (laf);

SwingUtilities.updateComponentTreeUI (tc);

if (null != chooser)

{

SwingUtilities.updateComponentTreeUI (chooser);

}

}

catch (UnsupportedLookAndFeelException exc)

{

( (DefaultComboBoxModel) jcb.getModel () ).removeElement (supportedLaF);

}

}

});

bottomPanel.add (jcb);

bottomPanel.add (jButton);

jPanel.add (bottomPanel);

tc.add (jPanel);

}

private static void loadFileData ( String fileName )

{

Locale locale = new Locale ("en", "US");

Scanner scanner = null;

String result = "";

String line = null;

LinkedList listInt = new LinkedList ();

LinkedList listDouble = new LinkedList ();

LinkedList listOthers = new LinkedList ();

try

{

scanner = new Scanner (new File (fileName)).useDelimiter ("[\\s\r\n\t\f]+");

while (scanner.hasNext ())

{

line = scanner.next ();

result += line + " ";

if (line.matches ("^(\\+|\\-)?[\\d,]+$"))

{

NumberFormat nf = NumberFormat.getInstance (locale);

listInt.add (nf.parse (line).toString ());

}

else if (line.matches ("^[\\dE\\.\\+\\-]+$"))

{

NumberFormat f = NumberFormat.getInstance (locale);

if (f instanceof DecimalFormat)

{

( (DecimalFormat) f ).setDecimalSeparatorAlwaysShown (true);

}

listDouble.add (f.parse (line).toString ());

}

else

{

listOthers.add (line);

}

}

}

catch (Exception e)

{}

scanner.close ();

int max =

listInt.size () > listDouble.size () ? listInt.size () > listOthers.size () ? listInt.size ()

: listOthers.size () : listDouble.size () > listOthers.size () ? listDouble.size ()

: listOthers.size ();

int size1 = listInt.size ();

for ( int i = size1; i 

{

listInt.add (" ");

}

int size2 = listDouble.size ();

for ( int i = size2; i 

{

listDouble.add ("  ");

}

int size3 = listOthers.size ();

for ( int i = size3; i 

{

listOthers.add ("   ");

}

String reg = "[\\[\\]]";

String intdata = listInt.toString ().replaceAll (reg, "");

String realdata = listDouble.toString ().replaceAll (reg, "");

String otherdata = listOthers.toString ().replaceAll (reg, "");

System.out.println ("Text file: ");

System.out.println (result);

System.out.println ("sumDouble: ");

System.out.println (realdata.replaceAll ("[,\\s]+$", ""));

System.out.println ("sumInt: ");

System.out.println (intdata.replaceAll ("[,\\s]+$", ""));

System.out.println ("sumOther: ");

System.out.println (otherdata.replaceAll ("[,\\s]+$", ""));

String[] ints = intdata.split (",\\s");

String[] reals = realdata.split (",\\s");

String[] others = otherdata.split (",\\s");

data = new String[][] { ints, reals, others };

}

public static void main ( String[] args )

{

loadFileData (FILE_NAME);

TokenCategorizer tc = new TokenCategorizer ("Categories/columns containing tokens");

createList (tc);

createTable (tc);

initOthers (tc);

initFrame (tc);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值