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

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

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

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

Q&A

2回答

504閲覧

java repaint()について

yasu_abu7

総合スコア12

Java

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

0グッド

0クリップ

投稿2018/11/08 01:04

編集2018/11/08 02:10

今回お聞きしたいのは、repaint()についてです。
ネットを見ていると、update()というのをいっしょに使用してつかっているのが見られます。
自分は、パネルにpaintComponentで三角錐の展開図を定義して、撮られた写真を読み取り、写真から色を抽出して展開図のほうに読み取った色を反映させたいのですが、どうもrepaint()というものの使い方がいまいちわからないので知っている方から詳しくお聞きしたいと思っています。

追記
パネルにpaintComponentで三角錐の展開図を定義しているものは、常時表示したいと思っています。ソースは以下になります。
色データ反映ボタンを押したら表示している展開図に画像から抽出した色を反映させたいです。

java

1public class GamenSeni extends JFrame { 2 static GamenSeni frame; 3 JButton button5; 4 static int S[][] = new int[4][9]; 5 6 String[][]V = { 7 {"0","0","0","0","0","0","0","0","0"}, 8 {"0","0","0","0","0","0","0","0","0"}, 9 {"0","0","0","0","0","0","0","0","0"}, 10 {"0","0","0","0","0","0","0","0","0"} 11 }; 12 int cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0; 13 14 /* 色を抽出するための点の座標を定義している場所 */ 15 static int x[] = {205,260,320,390,440,265,320,380,320}; 16 static int y[] = {165,195,170,185,165,270,290,270,360}; 17 /* 18 文字の制限につきx1[]~x36[],y1[]~y36[]は展開図に使用する座標が入った配列 19 */ 20 BufferedImage imagehairetu[] = new BufferedImage[4]; 21 public static void main(String args[]) { 22 //最初に生成されるフレームの画面の名前 23 frame = new GamenSeni("GUI_Sample"); 24 //表示させるためにtrueを定義している 25 frame.setVisible(true); 26 System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 27 28 } 29 30 public GamenSeni(String title){ 31 super(); 32 setTitle(title); 33 setBounds(550,250,800,600); 34 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 35 36 //最初の画面 37 JPanel p = new JPanel(); 38 JPanel p1 = new JPanel(){ 39 40 public void paintComponent(Graphics g){ 41 42 super.paintComponent(g); 43 Font fg = new Font("SandSerif",Font.PLAIN,20); 44 45 //drawPolygon 46 //fillPolygon 47 /* 抽出した色を三角の中に反映している場所 */ 48 49 /*枠線*/ 50 Graphics2D g2 = (Graphics2D)g; 51 BasicStroke stroke = new BasicStroke(2.0f); 52 g2.setStroke(stroke); 53 /*1面*/ 54 g.drawPolygon(x1, y1, 4); 55 g.drawPolygon(x2, y2, 4); 56 g.drawPolygon(x3, y3, 4); 57 g.drawPolygon(x4, y4, 4); 58 g.drawPolygon(x5, y5, 4); 59 g.drawPolygon(x6, y6, 4); 60 g.drawPolygon(x7, y7, 4); 61 g.drawPolygon(x8, y8, 4); 62 g.drawPolygon(x9, y9, 4); 63 /*2面*/ 64 g.drawPolygon(x10, y10, 4); 65 g.drawPolygon(x11, y11, 4); 66 g.drawPolygon(x12, y12, 4); 67 g.drawPolygon(x13, y13, 4); 68 g.drawPolygon(x14, y14, 4); 69 g.drawPolygon(x15, y15, 4); 70 g.drawPolygon(x16, y16, 4); 71 g.drawPolygon(x17, y17, 4); 72 g.drawPolygon(x18, y18, 4); 73 /*3面*/ 74 g.drawPolygon(x19, y19, 4); 75 g.drawPolygon(x20, y20, 4); 76 g.drawPolygon(x21, y21, 4); 77 g.drawPolygon(x22, y22, 4); 78 g.drawPolygon(x23, y23, 4); 79 g.drawPolygon(x24, y24, 4); 80 g.drawPolygon(x25, y25, 4); 81 g.drawPolygon(x26, y26, 4); 82 g.drawPolygon(x27, y27, 4); 83 /*4面*/ 84 g.drawPolygon(x28, y28, 4); 85 g.drawPolygon(x29, y29, 4); 86 g.drawPolygon(x30, y30, 4); 87 g.drawPolygon(x31, y31, 4); 88 g.drawPolygon(x32, y32, 4); 89 g.drawPolygon(x33, y33, 4); 90 g.drawPolygon(x34, y34, 4); 91 g.drawPolygon(x35, y35, 4); 92 g.drawPolygon(x36, y36, 4); 93 } 94 95 File file = new File("rgby1.jpg"); 96 if(file.exists()){ 97 System.out.println("保存した画像があります"); 98 if(file.canRead()){ 99 System.out.println("画像を読み込めれれるよ!"); 100 for(int i=0;i<4;i++){ 101 try { 102 imagehairetu[i] = (BufferedImage) ImageIO.read(file); 103 } catch (IOException e) { 104 e.printStackTrace(); 105 } 106 System.out.println(i+"番目の要素:"+imagehairetu); 107 } 108 System.out.println("画像を読みこんだよ!"); 109 System.out.println("配列に画像を入れたよ!"); 110 111 }else{ 112 System.out.println("画像を読み込めないよ!"); 113 } 114 }else{ 115 System.out.println("画像がないよ!"); 116 } 117 118 p1.setOpaque(false); 119 p1.setSize(new Dimension(800,600 )); 120 p.setBackground(Color.WHITE); 121 p1.setBackground(Color.white); 122 //自分で場所を決めるためのnull 123 p.setLayout(null); 124 p1.setLayout(null); 125 126 /* テキストボックスを生成している場所 */ 127 button5 = new JButton("色データ反映"); 128 button5.setBounds(230,10,150,100); 129 button5.addActionListener( 130 new ActionListener(){ 131 public void actionPerformed(ActionEvent event){ 132 int[][] arr = colorhairetu.getmen(0,4); 133 S = arr; 134 135 for(int o = 0; o < S.length;o++){ 136 for(int y = 0; y< S[o].length;y++){ 137 V[o][y] = String.valueOf(S[o][y]); 138 //System.out.println(V[o][y]); 139 140 } 141 } 142 143 for(String[] ksa : V){ 144 for(String num : ksa){ 145 if("1".equals(num)){cnt1++;} 146 if("2".equals(num)){cnt2++;} 147 if("3".equals(num)){cnt3++;} 148 if("4".equals(num)){cnt4++;} 149 } 150 } 151 repaint(); 152 //update(paint); 153 }}); 154 p.add(button5);//色反映ボタ 155 p.add(p1); 156 157 Container contentPane = getContentPane(); 158 getContentPane().add(p, BorderLayout.CENTER); 159 160 } 161 public void paint(Graphics h){ 162 163 super.paintComponent(h); 164 /* 色を抽出する場所 */ 165 /* 一面 */ 166 Color color1 = new Color(imagehairetu[0].getRGB(x[0], y[0])); 167 Color color2 = new Color(imagehairetu[0].getRGB(x[1], y[1] )); 168 Color color3 = new Color(imagehairetu[0].getRGB(x[2], y[2])); 169 Color color4 = new Color(imagehairetu[0].getRGB(x[3], y[3])); 170 Color color5 = new Color(imagehairetu[0].getRGB(x[4], y[4])); 171 Color color6 = new Color(imagehairetu[0].getRGB(x[5], y[5] )); 172 Color color7 = new Color(imagehairetu[0].getRGB(x[6], y[6] )); 173 Color color8 = new Color(imagehairetu[0].getRGB(x[7], y[7] )); 174 Color color9 = new Color(imagehairetu[0].getRGB(x[8], y[8] )); 175 /* 二面 */ 176 Color color10 = new Color(imagehairetu[1].getRGB(x[0], y[0])); 177 Color color11 = new Color(imagehairetu[1].getRGB(x[1], y[1])); 178 Color color12 = new Color(imagehairetu[1].getRGB(x[2], y[2])); 179 Color color13 = new Color(imagehairetu[1].getRGB(x[3], y[3])); 180 Color color14 = new Color(imagehairetu[1].getRGB(x[4], y[4])); 181 Color color15 = new Color(imagehairetu[1].getRGB(x[5], y[5])); 182 Color color16 = new Color(imagehairetu[1].getRGB(x[6], y[6])); 183 Color color17 = new Color(imagehairetu[1].getRGB(x[7], y[7])); 184 Color color18 = new Color(imagehairetu[1].getRGB(x[8], y[8])); 185 /* 三面 */ 186 Color color19 = new Color(imagehairetu[2].getRGB(x[0], y[0])); 187 Color color20 = new Color(imagehairetu[2].getRGB(x[1], y[1])); 188 Color color21 = new Color(imagehairetu[2].getRGB(x[2], y[2])); 189 Color color22 = new Color(imagehairetu[2].getRGB(x[3], y[3])); 190 Color color23 = new Color(imagehairetu[2].getRGB(x[4], y[4])); 191 Color color24 = new Color(imagehairetu[2].getRGB(x[5], y[5])); 192 Color color25 = new Color(imagehairetu[2].getRGB(x[6], y[6])); 193 Color color26 = new Color(imagehairetu[2].getRGB(x[7], y[7])); 194 Color color27 = new Color(imagehairetu[2].getRGB(x[8], y[8])); 195 /* 四面 */ 196 Color color28 = new Color(imagehairetu[3].getRGB(x[0], y[0])); 197 Color color29 = new Color(imagehairetu[3].getRGB(x[1], y[1])); 198 Color color30 = new Color(imagehairetu[3].getRGB(x[2], y[2])); 199 Color color31 = new Color(imagehairetu[3].getRGB(x[3], y[3])); 200 Color color32 = new Color(imagehairetu[3].getRGB(x[4], y[4])); 201 Color color33 = new Color(imagehairetu[3].getRGB(x[5], y[5])); 202 Color color34 = new Color(imagehairetu[3].getRGB(x[6], y[6])); 203 Color color35 = new Color(imagehairetu[3].getRGB(x[7], y[7])); 204 Color color36 = new Color(imagehairetu[3].getRGB(x[8], y[8])); 205 206 h.setColor(color9); 207 h.fillPolygon(x1, y1, 4); 208 h.setColor(color6); 209 h.fillPolygon(x2, y2, 4); 210 h.setColor(color7); 211 h.fillPolygon(x3, y3, 4); 212 h.setColor(color8); 213 h.fillPolygon(x4, y4, 4); 214 h.setColor(color1); 215 h.fillPolygon(x5, y5, 4); 216 h.setColor(color2); 217 h.fillPolygon(x6, y6, 4); 218 h.setColor(color3); 219 h.fillPolygon(x7, y7, 4); 220 h.setColor(color4); 221 h.fillPolygon(x8, y8, 4); 222 h.setColor(color5); 223 h.fillPolygon(x9, y9, 4); 224 /*2面*/ 225 h.setColor(color14); 226 h.fillPolygon(x10, y10, 4); 227 h.setColor(color13); 228 h.fillPolygon(x11, y11, 4); 229 h.setColor(color12); 230 h.fillPolygon(x12, y12, 4); 231 h.setColor(color11); 232 h.fillPolygon(x13, y13, 4); 233 h.setColor(color10); 234 h.fillPolygon(x14, y14, 4); 235 h.setColor(color17); 236 h.fillPolygon(x15, y15, 4); 237 h.setColor(color16); 238 h.fillPolygon(x16, y16, 4); 239 h.setColor(color15); 240 h.fillPolygon(x17, y17, 4); 241 h.setColor(color18); 242 h.fillPolygon(x18, y18, 4); 243 /*3面*/ 244 h.setColor(color23); 245 h.fillPolygon(x19, y19, 4); 246 h.setColor(color22); 247 h.fillPolygon(x20, y20, 4); 248 h.setColor(color21); 249 h.fillPolygon(x21, y21, 4); 250 h.setColor(color20); 251 h.fillPolygon(x22, y22, 4); 252 h.setColor(color19); 253 h.fillPolygon(x23, y23, 4); 254 h.setColor(color26); 255 h.fillPolygon(x24, y24, 4); 256 h.setColor(color25); 257 h.fillPolygon(x25, y25, 4); 258 h.setColor(color24); 259 h.fillPolygon(x26, y26, 4); 260 h.setColor(color27); 261 h.fillPolygon(x27, y27, 4); 262 /*4面*/ 263 h.setColor(color32); 264 h.fillPolygon(x28, y28, 4); 265 h.setColor(color31); 266 h.fillPolygon(x29, y29, 4); 267 h.setColor(color30); 268 h.fillPolygon(x30, y30, 4); 269 h.setColor(color29); 270 h.fillPolygon(x31, y31, 4); 271 h.setColor(color28); 272 h.fillPolygon(x32, y32, 4); 273 h.setColor(color33); 274 h.fillPolygon(x33, y33, 4); 275 h.setColor(color34); 276 h.fillPolygon(x34, y34, 4); 277 h.setColor(color35); 278 h.fillPolygon(x35, y35, 4); 279 h.setColor(color36); 280 h.fillPolygon(x36, y36, 4); 281 } 282 }; 283}

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

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

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

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

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

dice142

2018/11/08 02:07

調べて疑問に思ったのであれば調べたサイトなどを提示してください。その際に、このサイトにはこう書いてあり、こっちのサイトはこう書いていて、こういう理由でrepaint()(あるいはupdate())を使う理由がわからないなどという質問文にしないと、的確な回答が得られにくくなります。
guest

回答2

0

repaint javaでググればいくらでも。
java swing repaint 使い方が分からない。
JAVA repaintでの再描画について

上記のものが目的に合致しないのであればレッツ検索。

投稿2018/11/08 01:10

madoka9393

総合スコア992

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

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

madoka9393

2018/11/08 01:41

該当部分に関するコードでも載せてあればもう少しアドバイスのしようもあると思うんだけど、 そうでなしに「使い方わからんから教えて」に対して「ググれ」以外の回答ある? エスパーじゃないので当方の回答が見当違いである可能性についてはごめんなさいだけども。
yasu_abu7

2018/11/08 02:14

ご指摘ありがとうございます。そうですね。ソースがないと指摘してほしいものを指摘することもないですよね。すみませんでした。
madoka9393

2018/11/08 02:31 編集

質問者さんの質問内容に多少不足はあったかもしれませんが、どちらかと言うと「その状態でできる回答はこんなもんじゃない?」に対して低評価つけたどこぞの人に対するコメントなので余り気にされずとも。 とは言え「追記・修正」にもコメントあるように、元の質問文のままでは的確な回答は得られにくい、 というのはその通りなので、現状できていること、いないこと、どこまでわかっていてどこがわからないのか等を明確にすると、もっとちゃんとした回答がつきやすくなるかとは思います。
yasu_abu7

2018/11/08 02:49

ご指摘ありがとうございます。情報提供不足でした。すみませんでした。
guest

0

質問者様が参考にされたサイトはAWTでの描画における更新処理なので、質問者様が使用しているSwingとは異なります。
なのでmadoka9393様がご提示されたリンクの回答がわかりやすいと私は思うので、そちらを参考にされた方が良いかと思います。
説明がわからない時はjava swing 再描画でググって調べましょう。

(madoka9393様とほぼほぼ同じ回答になってしまいましたが。)

投稿2018/11/08 02:28

dice142

総合スコア5158

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

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

yasu_abu7

2018/11/08 02:51

ご指摘ありがとうございます。調べてみますね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問