No.2ベストアンサー
- 回答日時:
コードを三箇所追加しました。
コード追加1
何を描画するかの判定、変数。
コード追加2
判定変数の条件文で、何を描画するか、
0で、何も描画しない。
他の数値では、線を描画する。
コード追加3
ボタンのイベント処理で、
変数に1を、入れて、再描画、直線を描く
package pane1;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class p extends JFrame {
private JPanel jp1, jp2;
private JComboBox jcb;
private JButton jb;
//コードの追加1
int gc =0;
public p() {
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
jp1 = new JPanel();
getContentPane().add(jp1, "North");
jp1.setLayout(new FlowLayout());
String[] str = {"a", "b", "c"};
DefaultComboBoxModel combomodel = new DefaultComboBoxModel(str);
jcb = new JComboBox(combomodel);
jcb.setPreferredSize(new Dimension(75, 21));
jp1.add(jcb);
jb = new JButton("ボタン");
jp1.add(jb);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jbevent(e);
}
});
jp2 = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
//コードの追加2
if (gc == 0){
}else {
g.drawLine(150, 150, 250, 250);
}
}
};
getContentPane().add(jp2, "Center");
}
private void jbevent(ActionEvent e) {
//コードの追加3
gc =1;
repaint();
//(1)
}
public static void main(String args[]) {
p s3 = new p();
s3.setVisible(true);
}
}
まさにこのとおりです!これを元に作っていきたいと思います。
何度も何度も丁寧に答えてくれてありがとうございました。助かりました。ご返答ありがとうございました。
No.1
- 回答日時:
こんにちは、以下のようで、どうでしょう。
JFramにJPanelを貼り付け、
JPanelのpaintComponent内に
描画するものを書きます。
今回は、便宜的に、drawRectを利用しましたが、
画像にしたいなら、drawImageにすれば
良いと思います。
画像を変えたいなら、
ボタンで、drawImageのImageを
いろいろ変えてみればいいと思います。
また、実行してみると、ウィンドのサイズを
変えたり、サイズを変えても、画像が
消えることは、無いです。
package kienai;
import java.awt.Graphics;
import javax.swing.JPanel;
/**
*
* @author
*/
public class kienai extends javax.swing.JFrame {
int x = 0,y = 0;
/** Creates new form kienai */
public kienai() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成されたコード">
private void initComponents() {
jPanel1 = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawRect(x, y, 100, 100);
}
};
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setLayout(null);
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jPanel1.add(jButton1);
jButton1.setBounds(200, 280, 75, 21);
jButton2.setText("jButton2");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jPanel1.add(jButton2);
jButton2.setBounds(320, 280, 75, 21);
getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-425)/2, (screenSize.height-349)/2, 425, 349);
}
// </editor-fold>
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
x=100;y=100;
repaint();
// ここに処理コードを追加:
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
x=10;y=10;
repaint();
// ここに処理コードを追加:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new kienai().setVisible(true);
}
});
}
// 変数宣言 - 編集不可
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JPanel jPanel1;
// 変数宣言の終わり
}
ご返答ありがとうございます。
返答して頂いたプログラムを実行しますと、描画内容が消えることもなく、すばらしいプラグラムだと思います。
しかし、ボタンを押すと描画される、という質問なのですが、最初何も描画されていない状態から、ボタンを押すと描画される方法を知りたいのです。
そこで、tom11さんのを参考にプログラムしてみました。
package test20060207;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class sample3 extends JFrame {
private JPanel jp1, jp2;
private JComboBox jcb;
private JButton jb;
public sample3() {
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
jp1 = new JPanel();
getContentPane().add(jp1, "North");
jp1.setLayout(new FlowLayout());
String[] str = {"a", "b", "c"};
DefaultComboBoxModel combomodel = new DefaultComboBoxModel(str);
jcb = new JComboBox(combomodel);
jcb.setPreferredSize(new Dimension(75, 21));
jp1.add(jcb);
jb = new JButton("ボタン");
jp1.add(jb);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jbevent(e);
}
});
jp2 = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(150, 150, 250, 250);
}
};
getContentPane().add(jp2, "Center");
}
private void jbevent(ActionEvent e) {
//(1)
}
public static void main(String args[]) {
sample3 s3 = new sample3();
s3.setVisible(true);
}
}
(1)の部分に何を入れれば、実現するのでしょうか?
度々質問してしまい申し訳ありません。
ぜひよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
夏が終わったと感じる瞬間って、どんな時?
まだまだ暑い今日この頃。 しかしながら、もう夏は終わっている!……はず。 あなたが思う「夏が終わった!」エピソードを教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
JAVAで画像をボタンで切り替え表示し、さらにそれぞれの画像をそれぞれ
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JPanelの重ね方/OverlayLayout他
-
Enterキーでボタンを押すにはど...
-
【Swing】JPanel クラス外から...
-
ArrayListの使い方について(初...
-
ボタンがマウスオーバーしない...
-
VB6.0でのTextboxの高さ変更
-
javaで文字数制限するには?
-
開いたファイルをJListに追加し...
-
setPrefferedSizeとsetSize
-
JPanelの切り替えと再描画
-
JavaのswingでCardLayoutの画面...
-
TABキーの検出
-
System.err. printlnとSystem.o...
-
ダブルクォーテーションのrepla...
-
オブジェクトの中のプロパティ...
-
javaで質問です。 文字列2023/2...
-
C言語のポインターに関する警告
-
パソコンキーボードで時分秒を...
-
Javaで改行などが出来ないのです。
-
変数を動的に利用するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
JPanelの切り替えと再描画
-
javaで文字数制限するには?
-
TextAreaでの文字の色
-
Java JPanelを使ったコードにつ...
-
java 一意の値を取り出す方法
-
JPanelの重ね方/OverlayLayout他
-
Java-Swing TextAreaにスクロー...
-
JDialogを閉じた時の処理
-
4択クイズでのランダム出題の...
-
【Swing】JPanel クラス外から...
-
最後の行に移動するには?
-
エラーで式の開始が不正ですと...
-
’じゃんけん’をするプログラム...
-
JTable の 列幅を個別に設定す...
-
ArrayListの使い方について(初...
-
次のように書いたのですが、ウ...
-
TABキーの検出
-
JTableの列ヘッダ
-
c言語のプログラミングで1から1...
おすすめ情報