質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1237閲覧

javaでパスワードの認証に成功したら表を開きたい

uyu

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/11/04 16:54

編集2018/11/05 21:31

javaを勉強中のものです。
できれば家計簿を作りたいと思っています。
パスワード認証画面を作るのと表を作るプログラムはそれぞれ書けたのですが、
これらをどう関係させればよいのかがわかりません。
パスワードを認証してOKを押したら家計簿の表が表示されるのが理想です。
コードを書いてみたのですが
"actionPerformed(ActionEvent)はすでにクラスKakeibo3で定義されています"と出てしまいます。
ちなみにプログラミングにはjava8、ATOMを使用しています。
よろしくお願いいたします。
以下コードです。

import javax.swing.;
import javax.swing.table.
;
import java.awt.;
import java.awt.event.
;

class Kakeibo3 extends JFrame implements ActionListener{
JPasswordField pass;

public static void main(String[] args){
Kakeibo3 frame = new Kakeibo3("家計簿");
frame.setVisible(true);
}
Kakeibo3(String title){
setTitle(title);
setBounds(100,100,500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel p = new JPanel(); JLabel label = new JLabel("パスワード"); pass = new JPasswordField(10); JButton button = new JButton("確認"); button.addActionListener(this); p.add(label); p.add(pass); p.add(button); Container contentPane = getContentPane(); contentPane.add(p,BorderLayout.CENTER);

}

public void actionPerformed(ActionEvent e){
String password = new String(pass.getPassword());

if(password.equals("tan01200709")){ JLabel label = new JLabel("認証に成功しました"); JOptionPane.showMessageDialog(this,label,"成功",JOptionPane.INFORMATION_MESSAGE); }else{ JLabel label = new JLabel("パスワードが違います"); JOptionPane.showMessageDialog(this,label,"失敗",JOptionPane.ERROR_MESSAGE); pass.setText(""); }

}

private JTable table;
private JScrollPane sp;
private DefaultTableModel model;

public void actionPerformed(ActionEvent e){
String[] header = {"収入","支出","残高"};
model = new DefaultTableModel(header,10);

table = new JTable(model); sp = new JScrollPane(table);

}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2018/11/04 17:11

まずはJavaバージョンや使っているライブラリなどを環境情報として記載し、自分の作ったコードを提示しましょう。作ったのは「認証をする画面」だけでしょうか?認証後のセッション管理などは学びましたか?
m.ts10806

2018/11/04 19:42

あなたが作るものの手順はあなたが決めることであり他人が決められることではありません。「仕様」「設計」なので。まずは要件を決めてその通りに作ってみてください。今の状態は「要件不明瞭」ですよ。
azuapricot

2018/11/05 07:33

パスワード認証だけなら値を保持しておいてDBからパスワードを取り出し値を検証~でいい気もしますが、その後もそのユーザーのみ操作できるように保証したいのであればセッション管理をする必要がありますね~
uyu

2018/11/05 10:03

コードを提示させていただきました。手順ではなく「仕様」「設計」ですね。失礼しました。
guest

回答1

0

ベストアンサー

いくつか方法はあるとは思いますが、「パスワード認証画面」から「家計簿表示画面」への遷移と考えると
java swing 画面遷移で検索すればいくつか実装例が出てきます。
(最近はJavaFXでの実装が多いので、見たサイトがswingで実装しているかどうかちゃんと見てください。)

簡単に書くと、

  • メインとなるJFrameを用意する
  • 認証画面用のJPanelを用意する
  • 家計簿画面用のJPanelを用意する
  • 最初に認証用画面をし、認証画面のパスワードが通ったら家計簿画面に切り替える

(ここの方法は表示非表示の切り替えとかJFrameに追加削除とか、やり方によって異なります。)

"actionPerformed(ActionEvent)はすでにクラスKakeibo3で定義されています"と出てしまいます。

これは、同じクラス内でactionPerformed()を複数入れているからです。
同じ引数を持つ同一名メソッドは複数定義できません。
やるとしたらactionPerformed()内で場合分けするか、ActionListener用のクラスを複数用意する必要があります。

投稿2018/11/09 04:31

dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uyu

2018/11/10 16:35

なるほどですね!実装例がいくつか見つかったので参考にしてみたいと思います。 エラーメッセージについてもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問