****************************************************************
int.txt中的文本如下:
1?2?3?4?5?6?7?8?9?10
11?12?13?14?15?16?17?18?19?20
21?22?23?24?25?26?27?28?29?30
31?32?33?34?35?36?37?38?39?40
41?42?43?44?45?46?47?48?49?50
****************************************************************
CalcNumber.java的等級代碼如下:
進口?Java . awt . borderlayout;
進口?Java . awt . dimension;
進口?Java . awt . gridlayout;
進口?Java . awt . toolkit;
進口?Java . awt . event . action event;
進口?Java . awt . event . action listener;
進口?Java . io . buffered reader;
進口?Java . io . file not found exception;
進口?Java . io . filereader;
進口?Java . io . io exception;
進口?javax . swing . border factory;
進口?javax . swing . jbutton;
進口?javax . swing . jframe;
進口?javax . swing . jpanel;
進口?javax . swing . jscrollpane;
進口?javax . swing . jtextarea;
進口?javax . swing . ui manager;
公共?班級?CalcNumber?延伸?JFrame?{
JTextArea?在;
JTextArea?suText
JTextArea?heText
公共?CalcNumber()?{
This.setTitle("計算質數和合數");
//?輸入欄
在?=?新的?JTextArea(4,1);
in . setautoscrolls(true);
JScrollPane?題錄?=?新的?JScrollPane(in);
in . set border(border factory . createbevelborder(1));
JPanel?上位?=?新的?JPanel(新?BorderLayout());
upper . add(inscript oll);
//?按鈕
JButton?小鬼?=?新的?JButton("導入文本");
imp.addActionListener(新?ActionListener()?{
公共?作廢?actionPerformed(ActionEvent?e)?{
試試?{
BufferedReader?br?=?新的?BufferedReader(新?文件閱讀器(
" d:\ \ int . txt "));
字符串?s;
什麽時候?((s?=?br.readLine())?!=?null)?{
in.setText(in.getText()?+?" \n "?+?s);
}
br . close();
}?接住?(FileNotFoundException?e1)?{
e 1 . printstacktrace();
}?接住?(IOException?e2)?{
E2 . printstacktrace();
}
}
});
JButton?開始?=?新的?JButton("啟動兩個線程並計算");
start.addActionListener(新?CalcActionListener());
JPanel?buttonP?=?新的?JPanel();
buttonp . add(imp);
buttonP.add(開始);
//?結果
JPanel?結果?=?新的?JPanel(新?GridLayout(1,2));
JPanel?蘇帕內爾?=?新的?JPanel();
supanel . set border(border factory . createtitledorder("以下是質數"));
JPanel?hePanel?=?新的?JPanel();
he panel . set border(border factory . createtitledorder("以下為合數"));
result . add(suPanel);
result . add(hePanel);
suText?=?新的?JTextArea(4,25);
JScrollPane?蘇斯科爾?=?新的?JScrollPane(suText);
sutext . set border(border factory . createbevelborder(1));
heText?=?新的?JTextArea(4,25);
JScrollPane?赫斯科爾?=?新的?JScrollPane(heText);
hetext . set border(border factory . createbevelborder(1));
supanel . add(sus croll);
hepanel . add(he scroll);
//?總數
JPanel?全部?=?新的?JPanel(新?GridLayout(2,1,?2,?2));
all . set border(border factory . createtitledorder("計算質數和合數"));
all.add(上);
all.add(結果);
this.add(buttonP,?BorderLayout。南);
this.add(全部,?BorderLayout。中心);
//?this.setSize(400,?300);
this . pack();
工具包?工具?=?toolkit . getdefaulttoolkit();
維度?屏幕?=?tool . getscreensize();
this.setLocation(screen.width?/?2?-?this.getWidth()?/?2,?屏幕高度
/?2?-?this.getHeight()?/?2);
this . set visible(true);
this . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);
}
班級?CalcActionListener?器物?ActionListener,可運行?{
公共?作廢?actionPerformed(ActionEvent?e)?{
線程?suThread?=?新的?線程(新?CalcActionListener(),?《蘇》);
線程?他讀了?=?新的?線程(新?CalcActionListener(),?“他”);
suthread . start();
he thread . start();
}
公共?作廢?run()?{
字符串?s?=?in . gettext();
String[]?arr?=?s . split(" \ \ s ");
StringBuffer?蘇?=?新的?string buffer();
StringBuffer?何?=?新的?string buffer();
為了什麽?(int?我?=?0;?我?& lt?數組長度;?i++)?{
布爾?旗幟?=?假的;
如果?(!arr[i]。等於(" ")?& amp& amp?arr[i]?!=?null)?{
int?n?=?integer . value of(arr[I]);
為了什麽?(int?j?=?2;?j?& lt?n;?j++)?{
如果?(n?%?j?==?0)?{
旗幟?=?真實;
}
}
如果?(Thread.currentThread()。getName()。等於(“蘇”)
& amp& amp?旗幟?==?假)?{
蘇?=?su.append("??+?n);
}
如果?(Thread.currentThread()。getName()。等於(“他”)
& amp& amp?旗幟?==?真)?{
何?=?he.append("??+?n);
}
}
}
如果?(Thread.currentThread()。getName()。equals("su "))?{
suText.setText(新?string(su));
}?不然呢?{
heText.setText(新?String(他));
}
}
}
公共?靜電?作廢?main(String[]?args)?摔投?例外?{
ui manager . setlookandfeel(ui manager . getsystemlookandfeelclassname());
CalcNumber?c?=?新的?calc number();
}
}
****************************************************************
運行結果如下: