ジメジメする梅雨のお悩み、一挙解決! >>

携帯電話の通信方式で第三世代はCDMAっていう方式で通信を行っていることを知ったのですが、
そこの説明で、
「符号化のしくみを利用した多重方式です。」
「符号化のしくみの1つに、変調を行ったデジタル信号に対して、
さらに特殊な符号を使って変調を行うと、
まったく異なるデジタル信号に変わるというしくみがあります。
そして、この変化したデジタル信号に対して、
変調のときに使った特殊な符号を使って復調を行うと、
元の状態に戻るのです。」
という説明がありました。

質問なのですがそもそも「符号化」って何ですか?
CDMAは圧縮して解凍するのと同じようなことですか?
教えてください。お願いします。

A 回答 (3件)

ANo2 です。



拡散符号の選び方について、補足しておきます。
拡散符号は「直交性」のあるものを選びます。
ANo2 では、直交性のわかりやすい例として、ビットシフトして足し算するというものをあげさせてもらいました。
…とここまで書いて、ちょっとデジャブ?

あれ?…と思い、過去自分の回答したものをあさってみたら、やっぱり同じ回答をしたものがありましたね。。。

# 参考URL に貼っておきます。
# 参考URL の ANo2 あたりに長々と、同じようなことを書いています。

まぁ、多少言い回しは違う部分はありますが、見事に同じ説明をしていました。

参考URL:http://oshiete1.goo.ne.jp/qa1978291.html
    • good
    • 0

CDMA (Code Division Multiple Access) は「符号分割多重接続」と訳されますが、拡散符号と呼ばれるものを使って複数の接続を多重化するんです。


ポイントは、「符号によって帯域を拡散して多重化する」ことです。

たとえば、以下のような例を考えてみます。

・AさんからBさんに「1」というデータを送信する。
・CさんからDさんに「5」というデータを送信する。
・EさんからFさんに「3」というデータを送信する。

で、拡散符号として、それぞれ以下のような符号を使用することにします。
・AさんとBさんは「左に8ビットシフト」という符号を使用。
・CさんとDさんは「左に4ビットシフト」という符号を使用。
・EさんとFさんは「ビットシフトなし」という符号を使用。

それでは、拡散符号によって符号化してみます。

・AさんからBさんに送信するデータ:
 1 << 8 = 0x100
・CさんからDさんに送信するデータ:
 5 << 4 = 0x050
・EさんからFさんに送信するデータ:
 3 << 0 = 0x003

# 使用する帯域が、8ビットから12ビットに広がっている (拡散している) 点に注目してください。

これら符号化されたデータが Aさん、Cさん、Eさんから送信されると、回線内でデータが多重化されます。
ここでは、足し算で多重化することにします。

・データの多重化:
 0x100 + 0x050 + 0x003 = 0x153

これで、CDMA で送信されるデータ「0x153」が出来上がりました。

データを受け取る側の、Bさん、Dさん、Fさんは、皆「0x153」を受信します。
ただ、拡散符号はわかっているので、それをもとに符号化されたデータを復号します。

・Bさんが受け取ったデータの復号:
 (0x153 & 0xF00) >> 8 = 1
・Dさんが受け取ったデータの復号:
 (0x153 & 0x0F0) >> 4 = 5
・Fさんが受け取ったデータの復号:
 (0x153 & 0x00F) >> 0 = 3

というわけで、無事 AさんからBさん、CさんからDさん、EさんからFさんに送りたいデータが届きました。

基本原理は、こんな感じです。
今回の例は、話を単純化するために、拡散するときと復号するときで異なる符号を使いました。
実際には、もっと拡散符号としてはもっと複雑なものが使用されていて、拡散するときと復号するときで同じ拡散符号を使用できるように工夫されています。
こうすることで、一方が、送信するときの拡散と受信したときの復号で同じ拡散符号を使用できるようにしているんです。

ちなみに、au の通信方式 cdma2000 (cdmaOne含む) は、同期型 CDMA と呼ばれ、各基地局が GPS衛星から取得した時刻情報を基にして、時刻の同期を取っています。
拡散符号としては Walsh符号というものが使用されています。
# WIN で使用している EV-DO は除きます。
# 実は、EV-DO は、CDMA ではないんですが、詳細は割愛します。

また、DoCoMo や SoftBank の通信方式 WCDMA (Wideband CDMA) は、非同期型CDMA と呼ばれ、各基地局は時刻で同期していません。
拡散符号としては Gold符号というものが使用されています。

Walsh符号や、Gold符号の詳細は、これらをキーワードにぐぐってみてください (←あ、逃げた。。。)。

少々話が長くなりましたが、ご参考まで。。。
    • good
    • 1

>CDMAは圧縮して解凍するのと同じようなことですか?



信号処理と言う点では同じですが、違います。圧縮するよりはむしろデータ量は増えています。

最初のデジタル化は、CDと同じ単なるAD変換なのですが、

CDMAとはCodeDivisionMultipleAccessの略で

通常、信号を送ると1つの信号線(回線)で1つしか送ることができません。
これを、デジタル信号で1つ1つを短くして、信号の空時間に他の信号を入れるようにすると、1つの回線で2以上の信号を送ることができます。これが時分割多重(TDMA)です
信号を送る周波数を変えれば、送られてきた信号を容易に区別することが可能となり、やはり1つの回線で2以上の信号を送ることができます。これが周波数分割多重(FDMA)です。
CDMAは、ちょっと話がややこしいのですが、信号と特定の符号を演算して送信します。受信側で同じその符号を使って信号処理をすると、もとの信号を取り出せると言うわけです。直接拡散のスペクトラム拡散通信では必須の技術です。一番近い概念としては暗号化でしょうか。

大学レベルの信号処理の本を読めば、詳しい解説があります。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QcdmaOneとは

携帯電話のアクセス方式について教えて下さい。
周波数分割多重化方式や時分割多重化方式はなんとなく理解できるのですがスペクトラム拡散方式はどういった仕組みになってるのかさっぱりわかりません・・・1つの周波数帯で各端末に同時にばら撒くことなんてできるのですか?よろしくお願いします。

Aベストアンサー

CDMA = Code Division Multiple Access (符号分割多重接続)。
というわけで「拡散符号」という直交性のある符号を使って多重化するんですね。

たとえば、以下のような場合を考えてみます。

Aさん→Bさん:「2」を送信したい。
Cさん→Dさん:「5」を送信したい。
Eさん→Fさん:「9」を送信したい。

で、拡散符号として、こんなものを考えてみます。

Aさん→Bさん:0ビットシフト
Cさん→Dさん:4ビットシフト
Eさん→Fさん:8ビットシフト

さて、それでは拡散してみましょう。

Aさんが送るデータ:2 << 0 = 0x002
Cさんが送るデータ:5 << 4 = 0x050
Eさんが送るデータ:9 << 8 = 0x900

そして多重化してみます。

0x002 + 0x050 + 0x900 = 0x952

Bさん、Dさん、Fさんは3人とも「0x952」という数字を受け取ります。

それでは今度は逆拡散してみます。

Bさんが受け取るデータ:(0x952 & 0x00F) >> 0 = 2
Dさんが受け取るデータ:(0x952 & 0x0F0) >> 4 = 5
Fさんが受け取るデータ:(0x952 & 0xF00) >> 8 = 9

めでたく、Bさん、Dさん、Fさんは、それぞれ Aさん、Cさん、Eさんから送られたデータを受け取ることができました。

この例では、4ビットのデータが12ビットに拡散しています。
つまり、必要な帯域が3倍になっています。
さらに帯域を広げれば、多重度が増すのがわかると思います。

また、今回は拡散と逆拡散の演算が別々でしたが、実際には拡散と逆拡散は同じ演算でできるように工夫されています。
# ま、今回の例はホント適当な演算を選びましたからね。

イメージとしては、こんな感じなんですがいかがでしょうか。。。

# 実際には、さらに変調、復調の処理が必要になります。
# 通常の変調処理を「一次変調」、拡散処理を「二次変調」なんて呼んだりも
# します。

CDMA = Code Division Multiple Access (符号分割多重接続)。
というわけで「拡散符号」という直交性のある符号を使って多重化するんですね。

たとえば、以下のような場合を考えてみます。

Aさん→Bさん:「2」を送信したい。
Cさん→Dさん:「5」を送信したい。
Eさん→Fさん:「9」を送信したい。

で、拡散符号として、こんなものを考えてみます。

Aさん→Bさん:0ビットシフト
Cさん→Dさん:4ビットシフト
Eさん→Fさん:8ビットシフト

さて、それでは拡散してみましょう。

Aさんが送るデー...続きを読む

Qエクセルで片対数グラフを作る

エクセルで片対数グラフを作る方法を詳しく教えてください。お願いします。

Aベストアンサー

グラフの数値軸のところで右クリックして
軸の書式設定(O)→目盛(タブ名)

対数目盛を表示する(L)
にチェックを入れてください。

QGB積って何ですか?

GB積って何ですか?
GainとBandの積みたいですが、それで何が分かるのですか?

Aベストアンサー

増幅器の性能を比較する際の基準のひとつです。

利得(ゲインと言います)を上げる為に負荷インピーダンスを大きくするとそこに存在する浮遊容量(寄生容量)により-3dBカットオフ周波数が下がります(ポールと呼びます)。
反対に、帯域幅を広げようとすると利得を下げる必要があります。
そこで、この相反する利得(GainのG)と帯域幅(BandのB)の積をGB積と言い、その増幅器(トランジスターとかOPアンプとか、トランジスターを利用した回路とか)の性能をあらわします。

Q母音と子音の周波数

周波数が高いと音も高いんですよね? 母音と子音を比べると子音の方が周波数が高いそうなんですが、私には高い音に聞こえません。感覚的なものと周波数は違うということなのでしょうか?

Aベストアンサー

こんにちは。
私は音声信号とかそういうのには詳しくはないのですが
一応私の意見をお伝えします。

子音がそれ単独では音として発せられないのは
英語の発音勉強などをしていると体感できますよね。
例えば「th」などを発音する場合などです。
空気が抜けるような音しか聞こえないはずです。

以前に音声をマイクで取り込んでFFTを用いて周波数の解析を
行ったことがありますが、確かに母音より子音の方が周波数は高かったです。

人間の耳に聞こえる周波数はどれくらいかは知りませんが
恐らく子音部分の周波数はその範囲を超えているんだと思います。
子音といってもいくつかの周波数の集まりですので
その中でも低い周波数部分が空気が抜けるような音として
人間の耳に聞こえているんだと思います。

例えば「か」という音を発音して、だんだん声を高く(オクターブを上げる)していくと
当然声ができらなくなって最終的に「あ」になります。
(これは私だけなのかも知れません・・・)
これって喉の問題かも知れませんが、
先に説明したことの裏付けともとれるような気がします。

おそまつな回答でした。

こんにちは。
私は音声信号とかそういうのには詳しくはないのですが
一応私の意見をお伝えします。

子音がそれ単独では音として発せられないのは
英語の発音勉強などをしていると体感できますよね。
例えば「th」などを発音する場合などです。
空気が抜けるような音しか聞こえないはずです。

以前に音声をマイクで取り込んでFFTを用いて周波数の解析を
行ったことがありますが、確かに母音より子音の方が周波数は高かったです。

人間の耳に聞こえる周波数はどれくらいかは知りませんが
恐らく子音...続きを読む

Qオシロの入力インピーダンスについて

私の使っているオシロスコープは入力インピーダンスを
50Ωと1MΩに切り替えることができるのですが、切り替えたらどうなるのかよくわかりません。
マニュアルには観測できる垂直軸(電圧)の領域が1MΩのほうが大きいとしか書いてないです。
同じシグナルを入力したときに50Ωと1MΩとでは波形が違うみたいです。
切り替えると何が起こるのでしょうか?
よろしくお願いします。

Aベストアンサー

50Ω

信号は電力伝送されますから
あまり強い信号を入力してはいけません。
測定相手が50Ω系であれば、配線を切って
オシロに接続することで、反射の無い
きれいな(本来の)波形を観測することができます。
また、50Ωだと受け側は純抵抗に近くなりますから
容量成分で生じる不都合(スパイクなど)も
発生しません。
ただし、配線を切れないところの測定には適しません。
(こちらに電流が流れてしまうため)

1MΩ

信号はハイインピーダンス受けとなりますから、
配線を負荷につないだままで、
もしくは回路の途中からでも信号を取り出して
波形を観測することができます。
しかし、ハイ受けですから、回路に多少影響を
与えます。
また、出力回路のような処では
別に終端抵抗を必要とします。
そしてインピーダンスは高くても
プローブの容量成分(20pFぐらいかな)は
そのまま残りますから
波形に乱れが生じる場合もあります。

なお、オシロの回路は、1MΩ受けに造られていて
50Ωの時は入力端に抵抗が挿入されるように
作られているはずです。

50Ω

信号は電力伝送されますから
あまり強い信号を入力してはいけません。
測定相手が50Ω系であれば、配線を切って
オシロに接続することで、反射の無い
きれいな(本来の)波形を観測することができます。
また、50Ωだと受け側は純抵抗に近くなりますから
容量成分で生じる不都合(スパイクなど)も
発生しません。
ただし、配線を切れないところの測定には適しません。
(こちらに電流が流れてしまうため)

1MΩ

信号はハイインピーダンス受けとなりますから、
配線を負荷につないだ...続きを読む

Q占有周波数帯域幅と最大周波数偏移の求め方を教えて下さい。

占有周波数帯域幅と最大周波数偏移の求め方を教えて下さい。

FMの変調指数を5、周波数20MHzの搬送波を16kHzの正弦波信号でFMしたときの占有周波数帯域幅BFMと最大周波数偏移Δfを求めたいのですが、わからないので教えていただけませんか?よろしくお願いいたします。

Aベストアンサー

答えを教えるのは簡単ですが・・・。

↓の理論のところを見てください。
1.変調指数から最大周波数偏移を求める
2.次に占有周波数帯域幅(近似値)を求める

参考URL:http://ja.wikipedia.org/wiki/%E5%91%A8%E6%B3%A2%E6%95%B0%E5%A4%89%E8%AA%BF

Q1/10プローブと同軸ケーブルの違い

オシロスコープを使った実験で、1/10プローブとワニ口つき同軸ケーブルの比較を行いました。
実験方法としては、発振器と10kΩと電子電圧計を直列につなぎ、それぞれのケーブルでオシロスコープを用いて電圧を測定しました。

考察で
1/10プローブとワニ口つきケーブルの違いは何か。また、その違いがどうであれば正確な信号が観測できるか。10kΩを含めた回路を用いて式で示せ
とありました。

1/10プローブの構造は調べてなんとなく分かりました。しかし、違いがどうであれば正確な信号が観測できるか、10kΩを含めた回路でどのように式にして示すのかが分かりません。

どうか教えてください

Aベストアンサー

測定の際には できるだけ測定対象に影響を与えないようにして測定する必要があります

インピーダンス整合を乱したり、測定対象の電力を消費するようですと 測定計器を含めた特性を測定してしまい、測定対象の特性が測定できません

具体的な数値を入れて、測定対象にどの程度の影響を与えるかを試算してください

Q【swing】ボタンクリックにより、パネルごとの差し替えを行う

javaをはじめて2週間の_tonnuraと申します。
swingを用いて1枚のフレームに対し、ボタンクリックにより
画面遷移を行っていくアプリを作成しています。
最初の画面での画面遷移は成功するのですが、

その画面からの遷移のために、別のパネルを加えると画面が更新されません。初期画面→2枚目の画面→×3枚目の画面(2枚目のまま)

「getContentPane().list(System.out)」で確認したところ、物はあるようなので、「validate()」をかけているのですが変化なしです。

過去の質問に解決方法があると思い、検索で「QNo.196900 クリックでGUI部品を追加する」を見つけたのですが、コンポーネントに対するremoveAll後のvalidate()だけでは対処できませんでした。

以下にソースを記載します。
汚くて申し訳ありませんが、ご解答いただければ嬉しく思います。

※actionPerformedにて、「KihonCore kihonC」に飛ばしていますが
処理として「各部品の定義・配置・新たに定義したパネルへのセット後 パネルをコンポーネントへ配置」を行っています。

※画面遷移の順序としては
初期画面表示→//■2枚目の画面を貼り付け→//■初期画面を貼り付け(初期メニュー画面を描写)となっています。
------------------------------------------------------------
package test;

import java.awt.*;
import javax.swing.*;
import test.KihonCore.myListener;

public class Menu extends JFrame implements ActionListener {

public static void main(String[] args) {

Menu frame_m = new Menu();
frame_m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame_m.setTitle("画面遷移テスト");
frame_m.setBounds(10, 10, 750, 570);
frame_m.setVisible(true);
frame_m.setResizable(false);
}

Menu() {

SpringLayout layout = new SpringLayout();
JPanel panel_menu = new JPanel();
panel_menu.setLayout(layout);

JButton btn_gozen = new JButton();
        tn_gozen.addActionListener(this);
btn_gozen.setActionCommand("btn_gozen");
        btn_gozen.setPreferredSize(new Dimension(118, 45));
ImageIcon icon_gozen = new ImageIcon("./image/btn_gozen.png");
btn_gozen.setIcon(icon_gozen);
panel_menu.add(btn_gozen);

getContentPane().add(panel_menu);
validate();
addWindowListener(new myListener(0));

System.out.println("起動直後の画面状態");
getContentPane().list(System.out);
}
public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
try {
if (cmd.equals("btn_gozen")) {
//■2枚目の画面を貼り付け
getContentPane().removeAll();
KihonCore kihonC = new KihonCore();
kihonC.btnClk_MenuAm(getContentPane());
validate();

System.out.println("2画面目遷移後の画面状態");
getContentPane().list(System.out);

} else if (cmd.equals("btn_b01")) {
System.out.println("2画面目の1が押されました。");

} else if (cmd.equals("btn_b02")) {
System.out.println("2画面目の2が押されました。。");//

} else if (cmd.equals("btn_seiseki")) {
System.out.println("メニューボタン4が押下されました。");

} else if (cmd.equals("btn_syuuryou")) {
System.out.println("終了ボタンが押下されました。");
int option = JOptionPane.showConfirmDialog(null,"終了しますか?", "終了確認", JOptionPane.YES_NO_OPTION);

if (option == JOptionPane.YES_OPTION) {

System.out.println("はいを選択:終了");
System.exit(0);

} else if (option == JOptionPane.NO_OPTION) {
System.out.println("いいえを選択:終了しない");
return;
}

} else if (cmd.equals("btn_return")) {
System.out.println("戻るボタンが押下されました。");
//■初期画面を貼り付け(初期メニュー画面を描写
getContentPane().removeAll();

KihonCore kihonC = new KihonCore();
kihonC.btnClk_Rtn(getContentPane());
validate();

System.out.println("2画面目にて戻るを押した直後の画面状態");
getContentPane().list(System.out);
}

} catch (Exception e) {
System.out.println("エラーが発生しました");
e.printStackTrace();
}
}
}

javaをはじめて2週間の_tonnuraと申します。
swingを用いて1枚のフレームに対し、ボタンクリックにより
画面遷移を行っていくアプリを作成しています。
最初の画面での画面遷移は成功するのですが、

その画面からの遷移のために、別のパネルを加えると画面が更新されません。初期画面→2枚目の画面→×3枚目の画面(2枚目のまま)

「getContentPane().list(System.out)」で確認したところ、物はあるようなので、「validate()」をかけているのですが変化なしです。

過去の質問に解決方法があると思い...続きを読む

Aベストアンサー

補足ありがとうございます。

ざっと見たところ、KihonCoreの各メソッドで
Menu mn = new Menu();
でMenuクラスのインスタンスを生成しているのが変な動作の原因のような気がします。
Menuのインスタンスを生成した時点で別のフレーム(窓)を生成しています。
また、ボタンをアクションリスナーに登録していますが別フレームに登録していますので、
2つ目の画面から3つ目の画面に移るボタンを押したとしても
そのフレームでイベントは起こりません。
なので、KihonCoreのメソッドを呼ぶ際にMenu自身を引数とする等したほうが良いかもしれません。

Q無線LANアダプタとイーサーネットコンバーターの違いとは?

こんにちは
無線LANアダプタとイーサーネットコンバーター、両方とも無線LANにおける子機だと思うのですが両者の違いがわかりません。
違いのわかる方、よろしくお願いします。

Aベストアンサー

こんにちは。
質問者さんのお尋ねは、家庭や小規模事業所などで使う市販品についてだと思います。

どちらも同じように無線信号を送受信する子機なのですが、図のように、
1台のPCに内蔵あるいはUSB接続等で直結するものを「無線アダプタ」と呼び、
LANケーブルに無線信号を転送するものを「イーサネットコンバータ」と
呼び分けているようですね。

QjFrameを使って複数の画面を生成するにはどうすれば良いのでしょうか?

eclipseのVE機能を使ってjFrameの画面生成を勉強しているのですが、
複数の画面を生成することができません。。

以下のソースで、ボタンが押された時に新しく画面を生成するように
しているのですが、なぜか生成できません。エラーもありません。
何が足りなかったのか、悪かったのかを指摘していただけますでしょうか?

import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class jFrameTest extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JButton jButton = null;

/**
* This is the default constructor
*/
public jFrameTest() {
super();
initialize();
}

/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}

/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
jContentPane = new JPanel();
jContentPane.setLayout(new GridBagLayout());
jContentPane.add(getJButton(), gridBagConstraints);
}
return jContentPane;
}

/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("jButton");
jButton.addActionListener(this);
}
return jButton;
}

//ボタン入力リスナー
public void actionPerformed(ActionEvent event) {
String cmd = event.getActionCommand();

if(cmd == "jButton"){
jFrameTest jtest = new jFrameTest();
System.out.println("new");
}
}

}

eclipseのVE機能を使ってjFrameの画面生成を勉強しているのですが、
複数の画面を生成することができません。。

以下のソースで、ボタンが押された時に新しく画面を生成するように
しているのですが、なぜか生成できません。エラーもありません。
何が足りなかったのか、悪かったのかを指摘していただけますでしょうか?

import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt....続きを読む

Aベストアンサー

actionPerformedメソッドを編集。
mainメソッドを作成。
してみました。

こんな感じでいかがでしょう。
----------------------------------------------------------------------
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class jFrameTest extends JFrame implements ActionListener{

  private static final long serialVersionUID = 1L;
  private JPanel jContentPane = null;
  private JButton jButton = null;

  /**
   * This is the default constructor
   */
  public jFrameTest() {
    super();
    initialize();
  }

  /**
   * This method initializes this
   *
   * @return void
   */
  private void initialize() {
    this.setSize(300, 200);
    this.setContentPane(getJContentPane());
    this.setTitle("JFrame");
  }

  /**
   * This method initializes jContentPane
   *
   * @return javax.swing.JPanel
   */
  private JPanel getJContentPane() {
    if (jContentPane == null) {
      GridBagConstraints gridBagConstraints = new GridBagConstraints();
      gridBagConstraints.gridx = 0;
      gridBagConstraints.gridy = 0;
      jContentPane = new JPanel();
      jContentPane.setLayout(new GridBagLayout());
      jContentPane.add(getJButton(), gridBagConstraints);
    }
    return jContentPane;
  }

  /**
   * This method initializes jButton
   *
   * @return javax.swing.JButton
   */
  private JButton getJButton() {
    if (jButton == null) {
      jButton = new JButton();
      jButton.setText("jButton");
      jButton.addActionListener(this);
    }
    return jButton;
  }

  //ボタン入力リスナー
  public void actionPerformed(ActionEvent event) {
    String cmd = event.getActionCommand();
    
//    if(cmd == "jButton"){
    if("jButton".equals(cmd)){
      jFrameTest jtest = new jFrameTest();
      jtest.setVisible(true);
      System.out.println("new");
    }
  }

  public static void main(String[] args) {
    jFrameTest test = null;
    test = new jFrameTest();
    test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    test.setVisible(true);
  }
}

actionPerformedメソッドを編集。
mainメソッドを作成。
してみました。

こんな感じでいかがでしょう。
----------------------------------------------------------------------
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class jFrameTest extends JFrame implements ActionListener{

 ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報