我使用Java AWT和Swing API创建了一个记事本应用程序。我能够打开,保存并完成所有操作,我还创建了一个Jdialog来将查找和替换对话框显示到我的记事本应用程序中。
我的问题是,当我点击编辑 - >查找时,我会多次点击对话框点击查找按钮,如何只获得一次?
final JDialog frDialog = new JDialog();
frDialog.setLayout(new GridLayout(3,4));
//frDialog.setModal(true);
frDialog.setVisible(true);
frDialog.requestFocus();
我不想使用setModal方法,我是一个更新鲜的人,所以有人能建议我一个更好的方法来防止重复对话框吗?
提前致谢。
答案 0 :(得分:4)
您可以创建一个模式JDialog
,其中包含捕获搜索和替换字符串所需的选项。并提供匹配案例,正则表达式等选项的复选框。为JButton
,Find Next
,Replace
和Replace All
添加Cancel
按钮。为这些按钮编写适当的逻辑,最后从记事本的actionPerformed
方法中显示对话框。这应该为你提供一个很好的起点来完成你正在寻找的东西。
<强>更新强>
使用它来抢先一步:
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Snippet {
public static void main(String[] args) {
JFrame notepadFrame = createFrame();
JDialog frDialog = new JDialog(notepadFrame);
frDialog.setLayout(new GridLayout(3,4));
JTextField txtFind = new JTextField();
JTextField txtReplace = new JTextField();
JButton btnFind = new JButton("Find");
JButton btnReplace = new JButton("Replace");
JButton btnReplaceAll = new JButton("Replace All");
frDialog.add(new JLabel("Find: "));
frDialog.add(txtFind);
frDialog.add(new JLabel(""));
frDialog.add(btnFind);
frDialog.add(new JLabel("Replace with: "));
frDialog.add(txtReplace);
frDialog.add(new JLabel(""));
frDialog.add(btnReplace);
frDialog.add(new JLabel(""));
frDialog.add(new JLabel(""));
frDialog.add(new JLabel(""));
frDialog.add(btnReplaceAll);
frDialog.pack();
frDialog.setVisible(true);
show(notepadFrame);
}
public static JFrame createFrame(){
JFrame frame = new JFrame("Notepad Frame");
frame.setSize(600,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JTextArea());
return frame;
}
public static void show(JFrame frame) {
frame.setVisible(true);
}
}
希望这有帮助!