我正在使用WindowBuilder,我想询问如何在文本文件中搜索特定单词,我通过单击搜索按钮输入JTextField
?我的程序看起来像这样:
image http://img252.imageshack.us/img252/1410/39931036.png
这是我的JTextField
和JButton
:
private void initialize() {
frmInformacijaApieMuzikos = new JFrame();
frmInformacijaApieMuzikos.setResizable(false);
frmInformacijaApieMuzikos.setIconImage(Toolkit.getDefaultToolkit()
.getImage(KDVizualizuotas.class.getResource(
"/lt/kvk/i3_2/kalasnikovas_stanislovas/resources/Sidebar-Music-Blue-icon.png")));
frmInformacijaApieMuzikos.setTitle("Muzikos stiliai");
frmInformacijaApieMuzikos.setBounds(100, 100, 262, 368);
frmInformacijaApieMuzikos.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
txtStilius = new JTextField();
txtStilius.setBounds(10, 34, 128, 20);
txtStilius.setColumns(10);
JButton btnIekoti = new JButton("Ie\u0161koti");
btnIekoti.setBounds(146, 36, 89, 19);
btnIekoti.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
我的代码是“在文本文件中搜索”,它在控制台中运行,但我需要重新编写它:“输入单词到JTextField
(不在控制台中)并单击搜索按钮(不是输入按钮)来查找它”。我不知道怎么做。
我的代码(您可以跳过的最后两个代码):
package lt.kvk.i3_2.kalasnikovas_stanislovas;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class Stilius {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
try {
FileReader fr = new FileReader("src/lt/kvk/i3_2/kalasnikovas_stanislovas/Stiliai.txt");
BufferedReader br = new BufferedReader(fr);
String stiliuSarasas;
while((stiliuSarasas = br.readLine()) != null) {
System.out.println(stiliuSarasas);
}
fr.close();
/** String help = "";
System.out.println("Iveskite stiliaus pavadinima apie kuri ieskote informacijos (daugiau funkciju - Pagalba)");
if ("Pagalba".equalsIgnoreCase(help)) {
help = input.nextLine();
Pagalba pagalba = new Pagalba(help);
}**/
String kitasStilius = "Taip";
while (!"Ne".equalsIgnoreCase(kitasStilius)) {
if ("Taip".equalsIgnoreCase(kitasStilius)) {
System.out.println("Iveskite stiliaus pavadinima apie kuri ieskote informacijos");
String stilius = input.nextLine();
Veiksmai stiliausPaieska = new Veiksmai(stilius);
}
else if ("Ne".equalsIgnoreCase(kitasStilius)) {
}
else{
System.out.println("Neteisingai pasirinkta.");
}
System.out.println("Ar norite ieskoti kito stiliaus?");
System.out.println("Iveskite: Taip or Ne");
kitasStilius = input.nextLine();
}
}
catch (IOException e) {
System.out.println("Error:" + e.toString());
}
}
}
和其他班级
package lt.kvk.i3_2.kalasnikovas_stanislovas;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
public class Veiksmai {
public Veiksmai(String stilius) throws IOException {
BufferedReader bf = new BufferedReader(new FileReader("src/lt/kvk/i3_2/kalasnikovas_stanislovas/Miestai.txt"));
int counter = 0;
String line;
System.out.println("Ieskoma informacija apie " + stilius);
ArrayList<String> miestuSarasas = new ArrayList<String>();
String miestas = null;
while (( line = bf.readLine()) != null){
if (line.trim().length() == 0) miestas = null;
else if (miestas == null) miestas = line;
int indexfound = line.indexOf(stilius);
if (indexfound > -1) {
counter++;
miestuSarasas.add(miestas);
}
}
if (counter > 0) {
System.out.println(stilius + " turi " + counter + " remejus: " + miestuSarasas);
try {
File file = new File("src/lt/kvk/i3_2/kalasnikovas_stanislovas/Atsakymas.txt");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(stilius + " turi " + counter + " remejus: " + miestuSarasas+"\n");
bw.close();
}
catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Klaida, nerastas muzikos stilius");
}
bf.close();
}
public void stabdyti(){
}
public void sarasas() throws IOException{
FileReader fr = new FileReader("src/lt/kvk/i3_2/kalasnikovas_stanislovas/Stiliai.txt");
BufferedReader br = new BufferedReader(fr);
String stiliuSarasas;
while((stiliuSarasas = br.readLine()) != null) {
System.out.println(stiliuSarasas);
}
fr.close();
}
}
你能帮助我吗?我还是Java的新手。我尝试了很多,但一切都不会工作。
答案 0 :(得分:1)
我很久以前就完成了这个程序,它会自动突出显示JTextField
中的单词。希望这会有所帮助:
代码:
import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.GroupLayout.*;
public class Stringtext extends JFrame
implements DocumentListener {
private JTextField entry;
private JLabel jLabel1;
private JScrollPane jScrollPane1;
private JLabel status;
private JTextArea textArea;
final static Color HILIT_COLOR = Color.YELLOW;
final static Color ERROR_COLOR = Color.PINK;
final static String CANCEL_ACTION = "cancel-search";
final Color entryBg;
final Highlighter hilit;
final Highlighter.HighlightPainter painter;
public Stringtext() {
initComponents();
/*code to put text from a file
InputStream in = getClass().getResourceAsStream("file2.txt");
try {
textArea.read(new InputStreamReader(in), null);
} catch (IOException e) {
e.printStackTrace();
}
*/
textArea.setText("hello Mr! please try to post an SSCCE next time otherwise don't you DARE to...");
hilit = new DefaultHighlighter();
painter = new DefaultHighlighter.DefaultHighlightPainter(HILIT_COLOR);
textArea.setHighlighter(hilit);
entryBg = entry.getBackground();
entry.getDocument().addDocumentListener(this);
InputMap im = entry.getInputMap(JComponent.WHEN_FOCUSED);
ActionMap am = entry.getActionMap();
im.put(KeyStroke.getKeyStroke("ESCAPE"), CANCEL_ACTION);
am.put(CANCEL_ACTION, new CancelAction());
}
private void initComponents() {
entry = new JTextField();
textArea = new JTextArea();
status = new JLabel();
jLabel1 = new JLabel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("TextFieldDemo");
textArea.setColumns(20);
textArea.setLineWrap(true);
textArea.setRows(5);
textArea.setWrapStyleWord(true);
textArea.setEditable(true);
jScrollPane1 = new JScrollPane(textArea);
jLabel1.setText("Enter text to search:");
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
ParallelGroup hGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
SequentialGroup h1 = layout.createSequentialGroup();
ParallelGroup h2 = layout.createParallelGroup(GroupLayout.Alignment.CENTER);
h1.addContainerGap();
h2.addComponent(jScrollPane1, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE);
h2.addComponent(status, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE);
SequentialGroup h3 = layout.createSequentialGroup();
h3.addComponent(jLabel1);
h3.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED);
h3.addComponent(entry, GroupLayout.DEFAULT_SIZE, 321, Short.MAX_VALUE);
h2.addGroup(h3);
h1.addGroup(h2);
h1.addContainerGap();
hGroup.addGroup(GroupLayout.Alignment.TRAILING, h1);
layout.setHorizontalGroup(hGroup);
ParallelGroup vGroup = layout.createParallelGroup(GroupLayout.Alignment.LEADING);
SequentialGroup v1 = layout.createSequentialGroup();
v1.addContainerGap();
ParallelGroup v2 = layout.createParallelGroup(GroupLayout.Alignment.BASELINE);
v2.addComponent(jLabel1);
v2.addComponent(entry, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE);
v1.addGroup(v2);
v1.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
v1.addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 233, Short.MAX_VALUE);
v1.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED);
v1.addComponent(status);
v1.addContainerGap();
//Add the group v1 to the group vGroup
vGroup.addGroup(v1);
//Create the vertical group
layout.setVerticalGroup(vGroup);
pack();
}
public void search() {
hilit.removeAllHighlights();
String s = entry.getText();
if (s.length() <= 0) {
message("Nothing to search");
return;
}
String content = textArea.getText();
int index = content.indexOf(s, 0);
if (index >= 0) { // match found
try {
int end = index + s.length();
hilit.addHighlight(index, end, painter);
textArea.setCaretPosition(end);
entry.setBackground(entryBg);
message("'" + s + "' found. Press ESC to end search");
} catch (BadLocationException e) {
e.printStackTrace();
}
} else {
entry.setBackground(ERROR_COLOR);
message("'" + s + "' not found. Press ESC to start a new search");
}
}
void message(String msg) {
status.setText(msg);
}
public void insertUpdate(DocumentEvent ev) {
search();
}
public void removeUpdate(DocumentEvent ev) {
search();
}
public void changedUpdate(DocumentEvent ev) {
}
class CancelAction extends AbstractAction {
public void actionPerformed(ActionEvent ev) {
hilit.removeAllHighlights();
entry.setText("boo");
entry.setBackground(entryBg);
}
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
UIManager.put("swing.boldMetal", Boolean.FALSE);
new Stringtext().setVisible(true);
}
});
}
}