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

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

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

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

811閲覧

RenderingHints.Key のインスタンスを生成できません

ayu2020

総合スコア5

RPG

RPG (Report Program Generator)とは、IBMの System i(AS/400)サーバ向けのプログラミング言語です。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/03/29 09:55

前提・実現したいこと

初心者です。
javaでRPGゲームを作成しようとしています。
まずは、四角の図形がフィールド内でキー入力に対してただ平面上を移動する程度のプログラミングを書いたつもりですが、以下のエラーメッセージが発生しました。
以前使っていたいたPCで同じコードを実行すると正常に動くのですが、新しいPCで同じ実行したところこのエラーが出てしまいました。
どこを修正すればよいか、教えていただけると幸いです。
(前のPCは近々手放すので、今のPCで動かす方法をしておきたい次第です。)

使っているJAVA開発環境やOSの違いが関係しているかもと思ったので、それらの情報を最後に載せておきます。

発生している問題・エラーメッセージ

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 型 Component のメソッド addKeyListener(KeyListener) は引数 (RenderingHints.Key) に適用できません 型 RenderingHints.Key のインスタンスを生成できません at sample2.SampleClass.main(SampleClass.java:45) (→ ソースコード欄内のframe.addKeyListener(new Key() ); の部分がエラーの該当箇所ですが、このサイトにコピペするときに自分向けのコメントを削除しているので実際は45行目ではなくなっています。)

該当のソースコード

java

1package sample2; 2 3import java.awt.RenderingHints.Key; 4 5import javax.swing.JFrame; 6 7 8 9public class SampleClass{ 10 11 public static void main(String args[]) { 12 13 final int height = 1000;//後に他のクラスで設定するフィールドの画面サイズ 14 final int width =1000;//後に他のクラスで設定するフィールドの画面サイズ 15 final String titleName = "title";////フィールドの画面の名前 16 17 JFrame frame = new JFrame(titleName); 18 19 20 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 21 frame.setSize(width, height); 22 frame.setVisible(true); 23 24 25 26 MyJPanel myJPanel = new MyJPanel(); 27 frame.getContentPane().add(myJPanel); 28 29 myJPanel.setBounds(0,0, width, height); 30 31 32 frame.addKeyListener(new Key() ); 33 myJPanel.game(width, height); 34 } 35 36} 37 38--------------------------------------------------------------------------------------------- 39package sample2; 40 41import java.awt.Color; 42import java.awt.Graphics; 43import java.awt.Image; 44 45import javax.swing.JPanel; 46 47public class MyJPanel extends JPanel{ 48 Player player = new Player(0,0); 49 50 public void game(int width, int height) { 51 52 Image fieldimg = createImage(width, height); 53 54 Graphics fieldgraphic = fieldimg.getGraphics(); 55 56 Graphics wg = getGraphics(); 57 58 int x=200; 59 int y=200; 60 61 while(true){ 62 fieldgraphic.setColor(Color.WHITE); 63 fieldgraphic.fillRect(0,0,width, height); 64 65 //追加! 66 player.move(); 67 player.draw(fieldgraphic); 68 69 wg.drawImage(fieldimg, 0, 0, this); 70 try { 71 Thread.sleep(10); 72 } catch (InterruptedException e) { 73 e.printStackTrace(); 74 } 75 } 76 } 77} 78 79----------------------------------------------------------------------------------------------- 80 81package sample2; 82 83import java.awt.event.KeyEvent; 84import java.awt.event.KeyListener; 85 86public class Key implements KeyListener{ 87 88 static boolean up = false; 89 static boolean down = false; 90 static boolean right = false; 91 static boolean left = false; 92 static boolean enter = false; 93 94 @Override 95 public void keyPressed(KeyEvent e) { 96 97 if (e.getKeyCode() == KeyEvent.VK_UP) { 98 99 up = true; 100 } 101 if (e.getKeyCode() == KeyEvent.VK_DOWN) { 102 down = true; 103 } 104 if (e.getKeyCode() == KeyEvent.VK_LEFT) { 105 left = true; 106 } 107 if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 108 right = true; 109 } 110 111 if(e.getKeyCode() == KeyEvent.VK_ENTER) { 112 enter = true; 113 } 114 } 115 116 @Override 117 public void keyReleased(KeyEvent e) { 118 119 if (e.getKeyCode() == KeyEvent.VK_UP) { 120 up = false; 121 } 122 if (e.getKeyCode() == KeyEvent.VK_DOWN) { 123 down = false; 124 } 125 if (e.getKeyCode() == KeyEvent.VK_LEFT) { 126 left = false; 127 } 128 if (e.getKeyCode() == KeyEvent.VK_RIGHT) { 129 right = false; 130 } 131 if (e.getKeyCode() == KeyEvent.VK_ENTER){ 132 enter = false; 133 } 134 } 135 136 @Override 137 public void keyTyped(KeyEvent e) { 138 139 } 140} 141 142----------------------------------------------------------------------------------------------- 143 144package sample2; 145 146import java.awt.Color; 147import java.awt.Graphics; 148 149public class Player { 150 151 int x; 152 int y; 153 154 Player(int x, int y){ 155 this.x = x; 156 this.y = y; 157 } 158 159 public void move(){ 160 if(Key.up){ 161 y -= 5; 162 } 163 if(Key.down){ 164 y += 5; 165 } 166 if(Key.right){ 167 x += 5; 168 } 169 if(Key.left){ 170 x -= 5; 171 } 172 } 173 174 public void draw(Graphics g){ 175 g.setColor(Color.GREEN); 176 g.fillRect(x,y,50,50); 177 } 178} 179 180

試したこと

補足情報(FW/ツールのバージョンなど)

【OS】
(うまく動作した古いPC)
WINDOWS 7

(今回エラーが出た新しいPC)
WINDOWS 10 Home
バージョン:1909

【Java開発環境】
(古いPC)
Eclipse IDE for Enterprise Java Developers.
Version: 2018-12 (4.10.0)

(新しいPC)
Eclipse IDE for Enterprise Java Developers.
Version: 2020-03 (4.15.0)

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

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

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

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

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

guest

回答1

0

ベストアンサー

RenderingHints.Keyは、抽象クラス。

java

1public abstract static class RenderingHints.Key extends Object

その実装は、RenderingHintsで定数として定義されている。

java

1static RenderingHints.Key KEY_ALPHA_INTERPOLATION 2static Object VALUE_ANTIALIAS_ON 3...

自分でインスタンスを作るのではなく、ここで定義されている値を指定すればいい。

# awtもめいめいすき勝手に決められたヒント渡されても困ると思う。

投稿2020/03/29 11:19

編集2020/03/29 11:24
shiketa

総合スコア3971

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問