現在、ボタンを押すと
「てすと」(画像ファイル名はtest.jpg)→「てすと2」(画像ファイル名はtest2.jpg)
と画面が切り替えられるプログラムを作成していますが、不明な点があり質問してみました。
2つの画面を作成してみましたが、この後どう合体すればいいのかよく分かりません。分かる方は是非教えて下さい。
<プログラムソース>
(1)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Title extends JFrame{
public Title() {
add(new DrawPanel());
JPanel L = new DrawPanel();
L.setLayout(new BorderLayout());
JPanel L1 = new JPanel();
L1.setOpaque(false);
L1.add(new JButton("OK"));
L.add(L1, BorderLayout.SOUTH);
setContentPane(L);
}
public static void main(String args[]){
JFrame frame = new Title();
frame.setSize(640, 480);
frame.setTitle("てすと");
frame.setLocationRelativeTo(null);
frame.setBackground(Color.pink);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);}
}
class DrawPanel extends JPanel{
String path = "test.jpg";
Image image;
public DrawPanel() {
ImageIcon icon = new ImageIcon(path);
}
public void paintComponent(Graphics args) {
super.paintComponent(args);
args.drawImage(image, 0, 0, this);
args.setFont(new Font("TimesRoman",Font.ITALIC,100));
args.setColor(Color.red);
args.drawString("てすと", 120, 230);
}
}
(2)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Title2 extends JFrame {
public Title2() {
add(new DrawPanel());
JPanel L = new DrawPanel();
L.setLayout(new BorderLayout());
JPanel L1 = new JPanel();
L1.setOpaque(false);
L1.add(new JButton("OK"));
L.add(L1, BorderLayout.SOUTH);
setContentPane(L);
}
public static void main(String args[]){
JFrame frame = new Title2();
frame.setSize(640, 480);
frame.setTitle("てすと");
frame.setLocationRelativeTo(null);
frame.setBackground(Color.white);
frame.setVisible(true);
}
}
class DrawPanel extends JPanel {
String path = "test2.jpg";
Image image;
public DrawPanel() {
ImageIcon icon = new ImageIcon(path);
image = icon.getImage();
}
public void paintComponent(Graphics args) {
super.paintComponent(args);
args.setFont(new Font("TimesRoman",Font.BOLD,40));
args.setColor(Color.blue);
args.drawString("てすと2", 150, 390);
}
}
No.2ベストアンサー
- 回答日時:
こんな感じですか
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Title extends JFrame implements ActionListener {
boolean inAnApplet = true;
JPanel cards;
JButton kirikae;
final static String TEST_PANEL = "てすと";
final static String TEST2_PANEL = "てすと2";
String currentPanel = TEST_PANEL;
public Title() {
Container contentPane = getContentPane();
kirikae = new JButton("切替");
kirikae.setActionCommand("change");
kirikae.addActionListener(this);
JPanel bp = new JPanel();
bp.add(kirikae);
// Use the default layout manager, BorderLayout
contentPane.add(bp, BorderLayout.SOUTH);
cards = new JPanel();
cards.setLayout(new CardLayout() );
DrawPanel p1 = new DrawPanel ("テストプログラム" , "今回は、CardLayoutを使用して"
, "画像表示のプログラムを作ってみました", "test.jpg" );
DrawPanel p2 = new DrawPanel ("どうでした?" , "皆さんも一度画像表示のプログラムを"
, "作ってみてはいかがでしょうか?", "test2.jpg") ;
cards.add(p1, TEST_PANEL);
cards.add(p2, TEST2_PANEL);
contentPane.add(cards, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (inAnApplet) {
dispose();
} else {
System.exit(0);
}
}
} );
}
public void actionPerformed (ActionEvent e) {
CardLayout cl = (CardLayout)(cards.getLayout() );
if (e.getActionCommand().equals("change")) {
if (currentPanel == TEST_PANEL) {
cl.show(cards, TEST2_PANEL );
currentPanel = TEST2_PANEL;
} else {
cl.show(cards, TEST_PANEL );
currentPanel = TEST_PANEL;
}
}
}
public static void main(String[] argv) {
Title window = new Title();
window.inAnApplet = false;
window.setTitle("CardLayout");
window.pack();
window.setVisible(true);
}
public Dimension getMinimumSize() {
return new Dimension(640,480);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
class DrawPanel extends JPanel{
String message1, message2, message3 ;
String path ;
Image image;
public DrawPanel(String m1, String m2, String m3, String fileName) {
//ImageIcon icon = new ImageIcon(path);
Toolkit toolkit = Toolkit.getDefaultToolkit();
this.path = fileName;
this.message1 = m1;
this.message2 = m2;
this.message3 = m3;
image = toolkit.getImage (path);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
g.setFont(new Font("TimesRoman",Font.ITALIC,30));
g.setColor(Color.red);
g.drawString(this.message1 , 60, 230);
g.drawString(this.message2 , 60, 260);
g.drawString(this.message3 , 60, 290);
}
public Dimension getMinimumSize() {
return new Dimension(640,400);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
No.1
- 回答日時:
ボタンを押すごとに現在表示しているパネルをremove、もう一方のパネルをaddするという方法もありますが、
カードレイアウトを使ってみました。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Title extends JFrame implements ItemListener {
boolean inAnApplet = true;
JPanel cards;
final static String TEST_PANEL = "てすと";
final static String TEST2_PANEL = "てすと2";
public Title() {
Container contentPane = getContentPane();
// Put the JComboBox in a JPanel to get a nicer look.
String comboBoxItems[] = {TEST_PANEL, TEST2_PANEL };
JPanel cbp= new JPanel();
JComboBox c = new JComboBox(comboBoxItems);
c.setEditable(false);
c.addItemListener(this);
cbp.add(c);
// Use the default layout manager, BorderLayout
contentPane.add(cbp, BorderLayout.NORTH);
cards = new JPanel();
cards.setLayout(new CardLayout() );
DrawPanel p1 = new DrawPanel ("てすと", "test.jpg" );
DrawPanel p2 = new DrawPanel ("てすと2", "test2.jpg") ;
cards.add(p1, TEST_PANEL);
cards.add(p2, TEST2_PANEL);
contentPane.add(cards, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if (inAnApplet) {
dispose();
} else {
System.exit(0);
}
}
} );
}
public void itemStateChanged(ItemEvent evt) {
CardLayout cl = (CardLayout)(cards.getLayout() );
cl.show(cards, (String)evt.getItem() );
}
public static void main(String[] argv) {
Title window = new Title();
window.inAnApplet = false;
window.setTitle("CardLayout");
window.pack();
window.setVisible(true);
}
public Dimension getMinimumSize() {
return new Dimension(640,480);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
class DrawPanel extends JPanel{
String titleName;
String path ;
Image image;
public DrawPanel(String title, String fileName) {
//ImageIcon icon = new ImageIcon(path);
Toolkit toolkit = Toolkit.getDefaultToolkit();
this.path = fileName;
this.titleName = title;
image = toolkit.getImage (path);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, this);
g.setFont(new Font("TimesRoman",Font.ITALIC,100));
g.setColor(Color.red);
g.drawString(titleName, 120, 230);
}
public Dimension getMinimumSize() {
return new Dimension(640,400);
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
}
この回答への補足
実行してみましたら、ちゃんと画面が映りました。
補足しますけど、今度は「てすと」では・・・
「テストプログラム」
「今回は、CardLayoutを使用して」
「画像表示のプログラムを作ってみました」
「てすと2」では・・・
「どうでした?」
「皆さんも1度画像表示のプログラムを」
「作ってみてはいかがでしょうか?
と各3行文章を表示させたいですが、どうすればいいですか?
あとはJComboboxを使用せず、CardLayoutとボタン1つで画面が切り替わるソースが分かれば、一緒に教えて頂けると有り難いですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaのswingでCardLayoutの画面...
-
JPanelの重ね方/OverlayLayout他
-
【Swing】JPanel クラス外から...
-
System.out.printlnの出力先
-
無名配列の作成方法について質問
-
VBAで配列の計算
-
2次元配列のコピー
-
パソコンキーボードで時分秒を...
-
ボタンの複数割り当てについて
-
nullcline
-
Javaのコマンドライン引数を使...
-
JavaのSwingで別のフォーム...
-
System.out.printlnの意味がよ...
-
行の途中から読み込む方法
-
C#で、デリゲートからその関数...
-
getStringの値がNULLの時の処理
-
java 大文字と小文字を入れ替える
-
コンパイルエラー
-
javaのプログラムで、forの文が...
-
Javaによる利率計算の実装方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
JPanelの切り替えと再描画
-
JPanelの重ね方/OverlayLayout他
-
setPrefferedSizeとsetSize
-
最後の行に移動するには?
-
TextAreaでの文字の色
-
【Swing】JPanel クラス外から...
-
JButton-背景の透明化
-
4択クイズでのランダム出題の...
-
エラーで式の開始が不正ですと...
-
javaで文字数制限するには?
-
VB6.0でのTextboxの高さ変更
-
c言語のプログラミングで1から1...
-
次のように書いたのですが、ウ...
-
KeyListenerの使い方について
-
ボタンがマウスオーバーしない...
-
あるコンボボックスを選択する...
-
JavaのswingでCardLayoutの画面...
-
JTableの列ヘッダ
-
ボタンクリック後パネルを再描...
おすすめ情報