序文
最近のリクエストには論理リンクがあります。ローカルに保存された XML ファイルから値を取り出す必要があり、この値は変更されます。そこでプロジェクト マネージャーは私に、ユーザーがファイル パスを見つけなくても、インターフェイス操作を通じて変更された値を直接ファイルに書き込んで、ファイルを編集できる小さなツールを作成してもらえないかと尋ねました。私の最初の反応は、「やりたくない」というものでした。しかし、それは不可能ではなく、JFrame を使用して実現できます。
1. JFrame の概要
JFrame はコンピュータ言語を指します。Java GUI プログラムの基本的な考え方は、最大化、最小化、閉じることができる画面上のウィンドウのオブジェクトである JFrame に基づいています。
Swing の 3 つの基本構成要素であるラベル、ボタン、テキスト フィールドですが、それらを配置する場所が必要であり、ユーザーにそれらの使い方を知ってもらいたいと考えています。JFrame クラスは、この問題を解決します。JFrame クラスは、プログラマが他のコンポーネントを追加し、それらを整理し、ユーザーに提示できるようにするコンテナです。JFrame は実際には、プログラマがコンポーネントを配置してユーザーに提示するためだけのものではありません。見かけの単純さと比較して、実際には Swing パッケージの中で最も複雑なコンポーネントです。コンポーネントをできるだけシンプルに保つために、JFrame は、オペレーティング システムに依存しない Swing コンポーネントと、それらが実際に実行されるオペレーティング システムの間のブリッジとして機能します。JFrame はネイティブ オペレーティング システムのウィンドウとして登録され、これにより、最小化/最大化、サイズ変更、移動など、オペレーティング システム ウィンドウのよく知られた多くの特性を得ることができます。
今回は施工方法の一部のみを記載しておりますので、その他の施工方法については公式サイトの情報をご参照ください。
JFrame() | 最初は表示されない新しいフォームを構築します。 |
JFrame(文字列タイトル) | 指定されたタイトルを持つ、最初は非表示の新しいフレームを作成します。 |
2. 実装手順:
- 1. 新しい Java クラスを作成する
- 2. 3 つのコントロールを宣言します [3 つのコンポーネント JLabel、JTextField、および JButton を定義します]
JLabel jlabel;
JTextField jtf1;
JButton jb1, jb2;
- 3. パネルを追加します [JPanel コントロールを定義し、そのコントロールを順番に JPanel に追加します]
pane = new JPanel();
pane.setBounds(10, 10, 400, 300);
pane.setLayout(null);
jlabel = new JLabel("设备主秘匙:");
jlabel.setBounds(30, 40, 80, 30);
jtf1 = new JTextField();
jtf1.setBounds(110, 40, 260, 30);
pane.add(jlabel);
pane.add(jtf1);
- 4. ウィンドウとコントロール
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
}
});
-
5. オブジェクトのインスタンス化
-
6. 保存して実行
3. 完全なコード
以下は小さなケースであり、このケースに従って書き換えることができます。
主な懸念点:
1. このフォームをどのように作成するか?
2. ユーザーが入力した内容を取得するにはどうすればよいですか?
ユーザーが入力した値が取得された場合にのみ、さらなる操作を実行できます。
/**
* @author zyz
* @version 1.0
* @data 2023/7/16 15:06
* @Description: 使用java制作一个窗体,用来收集用户输入的内容
*/
public class Form extends JFrame {
JLabel jlabel;
JTextField jtf1;
JButton jb1, jb2;
JPanel pane;
private String PackageConfig = "";
private String MainKey = "";
public String getMainKey() {
return MainKey;
}
public void setMainKey(String mainKey) {
MainKey = mainKey;
}
public String getPackageConfig() {
return this.PackageConfig;
}
public void setPackageConfig(String packageConfig) {
this.PackageConfig = packageConfig;
}
/**
* 构造函数
*
* @param title
*/
public Form(String title) {
super(title);
this.getContentPane().setLayout(null);
this.setBounds(500, 500, 460, 460);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pane = new JPanel();
pane.setBounds(10, 10, 400, 300);
pane.setLayout(null);
jlabel = new JLabel("设备主秘匙:");
jlabel.setBounds(30, 40, 80, 30);
jtf1 = new JTextField();
jtf1.setBounds(110, 40, 260, 30);
pane.add(jlabel);
pane.add(jtf1);
jb1 = new JButton("保存");
jb1.setBounds(130, 100, 70, 30);
pane.add(jb1);
jb2 = new JButton("取消");
jb2.setBounds(220, 100, 70, 30);
pane.add(jb2);
this.add(pane);
/**
* 处理文本内容
* true 包含中文字符 false 不包含中文字符
*/
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//正则表达式
Pattern p = Pattern.compile("[\u4E00-\u9FA5|\\!|\\,|\\。|\\(|\\)|\\《|\\》|\\“|\\”|\\?|\\:|\\;|\\【|\\】]");
String inputMainKey = jtf1.getText().trim();
if (jtf1.getText().trim().length() == 0) {
JOptionPane.showMessageDialog(null, "输入内容不能为空!!!");
} else {
Matcher m = p.matcher(inputMainKey);
if (m.find()) {
JOptionPane.showMessageDialog(null, "输入内容不合法,应该为数字+英文组合!!!");
} else {
JOptionPane.showMessageDialog(null, "修改成功!!!");
}
}
}
});
this.setVisible(true);
}
public static void main(String[] args) {
Form c = new Form("修改主秘匙的值");
}
}
4.効果を実感する
ページは見にくいかもしれませんが、機能します。ページレイアウトはご要望に応じてデザイン可能です。
入力内容を検証し、
5.あとがき
私がやりたいのは、ユーザーが入力したデータを暗号化してローカルの XML ファイルに保存することですが、同時に、異なるシステムに応じて異なるパスにあるファイルを変更する必要があります。また、この記述された Java ツールを jar パッケージにパッケージ化する必要があります。ユーザーが直接クリックして実行できるようにします。同時に、ユーザーシステムに jdk または jre がインストールされていない場合、この問題も考慮する必要があります。幸いなことに、会社のプロジェクトにはすでに jdk が含まれています。必要なのは、bat スクリプトを作成し、プロジェクト内の j パスを jdk パスに指すようにすることだけです。
ヒント: プロジェクトに導入したサードパーティの jar パッケージを使用する場合は、インポートされた jar パッケージが最終的なプロジェクトの jar パッケージに含まれていることを確認する必要があります (IDEA に付属のパッケージ化ツールを使用することも、Maven を使用することもできます)それをパッケージ化する]。そうしないと、jar パッケージを実行するときに、クラスが見つからないという問題が報告されます。
具体的なパッケージ化については、このブログを参照してください。Mavenは IDEA 独自のツールを使用してパッケージ化し、同時に jar パッケージを lib にインポートし、jar パッケージをダブルクリックして直接実行します。