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

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

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

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

Q&A

解決済

1回答

1764閲覧

JAVA Graphicsクラスの初期設定について

mike2mike4

総合スコア901

Java

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

0グッド

0クリップ

投稿2017/01/30 07:29

JAVA初心者です。SWTでCanvasの上に長方形を描画しようとしています。
メソッドに引数を渡す前に初期設定をしようとして、
http://yan-note.blogspot.jp/2009/06/awt-2.html
を参考にして、
Graphics g = getGraphics();
としました。
ですが、eclipseでエラーが表示されています。
「メソッド getGraphics() は型 new SelectionAdapter(){} で未定義です」と出ます。

import java.awt.Graphics;
とクラスはインポートしているのですが、何故出来ないのかよく分かりません。

参考までにソースを添付します
import java.awt.Color;
import java.awt.Graphics;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class TestApp extends Shell {
private Text text;

/** * Launch the application. * @param args */ public static void main(String args[]) { try { Display display = Display.getDefault(); TestApp shell = new TestApp(display); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } } catch (Exception e) { e.printStackTrace(); } } /** * Create the shell. * @param display */ public TestApp(Display display) { super(display, SWT.SHELL_TRIM); Label lblNewLabel = new Label(this, SWT.NONE); lblNewLabel.setBounds(10, 10, 86, 15); lblNewLabel.setText("グラフです"); Canvas canvas = new Canvas(this, SWT.NONE); canvas.setBounds(10, 31, 342, 182); text = new Text(this, SWT.BORDER); text.setBounds(10, 230, 73, 21); text.setText("0"); Button button = new Button(this, SWT.NONE); button.addSelectionListener(new SelectionAdapter() { /* * @Override(非 Javadoc) * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent) */ public void widgetSelected(SelectionEvent arg0) { /* ここにボタンを押したときの処理を書く * */ int data; Graphics g = getGraphics(); data = Integer.parseInt(text.getText()); if (data < 0 || data > 100){ Shell shell = new Shell(display); MessageBox msg = new MessageBox(shell); msg.setText("エラー"); msg.setMessage("0以上100以下を入れてください"); msg.open(); } else { lblNewLabel.setText(text.getText()); bar(g); } } }); button.setBounds(94, 226, 75, 25); button.setText("作成"); createContents(); } /** * Create contents of the shell. */ protected void createContents() { setText("SWT Application"); setSize(450, 300); } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } public void bar(Graphics g){ g.setColor(Color.darkGray); g.fillRect(10, 40, 100, 50); }

}

3日ほど悩んでますが、どうすれば良いのか皆目見当が付かないので分かる方お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

参考となるページでgetGraphicsを使用している内部クラスMyMouseAdapterの外部クラスであるGraphicSample03は、Frameを継承しています。そしてgetGraphicsはjava.awt.Frameが持つメソッドです。swtとawtは名前が似ていますが全く別物です。swt上でawtで使うのはちょっと無理やりしないとできません。参考にしているページがawt用なのが間違いだと思われます。

無理やりやる方法の参考
http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/DrawanXusingAWTGraphics.htm

素直にswt用の描画機構GCを使う方法の参考
http://www.eclipse.org/articles/Article-SWT-graphics/SWT_graphics.html

投稿2017/01/30 07:57

masaya_ohashi

総合スコア9206

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

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

mike2mike4

2017/01/30 08:55

ご回答ありがとうございます。え、英語ですか。頑張って読んでみます。素直にswtを使いたいと思います。
masaya_ohashi

2017/01/30 09:20 編集

得てしてプログラミングの参考サイトは英語が多くなります。なぜなら日本語でやり取りしているのは日本人プログラマ同士だけで、大きく世界を見渡せば、プログラマの圧倒的多数は英語でやり取りするからです。プログラミングについて調べごとをする上で、英語が読める読めないは、田舎の図書館で調べごとをするのと国立国会図書館で調べごとをするくらい差があります。書いたり喋れなくとも、読めるだけでかなり有利になるので、英語を毛嫌いせず、読む努力をしてみましょう。
mike2mike4

2017/01/30 09:44

はい、わかりました。丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問