Java入門・初心者質問スレ Part.10

■ このスレッドは過去ログ倉庫に格納されています
2020/04/01(水) 15:09:15.95ID:9COIb57q0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.9
https://mevius.5ch.net/test/read.cgi/tech/1552143555/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
362デフォルトの名無しさん (ワッチョイ 6f01-xx+x)
垢版 |
2020/06/15(月) 00:46:25.08ID:7xMM9RPC0
>>361
騒いでないしeclipseはラムダ式が苦手なんよeclipseエアプなん?eclipseキチガイなん?
2020/06/15(月) 02:22:26.04ID:l+Pa5rRA0
IntelliJ って Swing だったのか
クソクソ言われ続けた Swing くんでも本気出せばあそこまで作り込めるんだな
eclipse RCP みたいな、もしくは SWT/JFace みたいな、
IDEで使ってる UI コンポーネントのセットみたいなライブラリって IntelliJ にもあります?
2020/06/16(火) 18:40:47.34ID:0XUtJ4yX0
初めて1週間くらいだけど、フィールドと普通の関数の違いが分かりません

Cみたいにクラス外で宣言でないからクソだわ
2020/06/16(火) 18:46:11.81ID:0XUtJ4yX0
関数じゃなくて変数だった
366デフォルトの名無しさん (ワッチョイ 6f01-gQ8P)
垢版 |
2020/06/16(火) 19:38:02.20ID:GWa7wGoJ0
いまどきフィールドくらいCにもあるやろ
2020/06/16(火) 21:00:30.33ID:JkKVZycg0
スコープの違い

ローカル変数 => メソッド/コンストラクタ/ブロック内のローカル変数
インスタンス変数 => 俗に言うフィールド
クラス変数 => static変数
2020/06/17(水) 01:41:42.72ID:H0Dcbe9T0
Ruby でもクラスに、外からインスタンス変数にアクセスできる、
accessor(setter/getter)を定義したら、
関数だけど、変数のように見える

@hello は、インスタンス変数

class A
def hello # getter
@hello
end

def hello=( val ) # setter
@hello = val
end
end

a = A.new

a.hello = "ハロー"
p a.hello #=> "ハロー"
369デフォルトの名無しさん (ワッチョイ 7601-KnoZ)
垢版 |
2020/06/17(水) 01:49:23.80ID:gwOMFOnj0
>>368
なんかダサくない? Javaの方が良くない?
2020/06/17(水) 02:30:30.21ID:iASQjm1j0
class A
attr_accessor :hello
end

>>368が書いてるのと同じgetter/setterが設定される
Javaにもproperty導入されたんだっけ?
2020/06/17(水) 03:37:07.36ID:8C+0Fl/Sa
Javaだとkotlinのプロパティになるのかな・・

kotlinのプロパティとカスタムアクセサ
2020/06/17(水) 03:40:19.79ID:8C+0Fl/Sa
kotlinのプロパティとカスタムアクセサ
https://qiita.com/Black_Kite/items/a9fc406c3cbfeac463ea

public class Address {
public var name: String = ...
}

fun copyAddress(address: Address): Address {
val result = Address() // 'new' キーワードは Kotlin にありません
result.name = address.name // プロパティの利用。
// ...
return result
}
2020/06/17(水) 07:40:10.28ID:PujUJ59z0
Javaも早くdata classを逆輸入してほしい

data class Address(var name: String)

val result = address.copy
println(result.address)
2020/06/17(水) 07:43:28.51ID:PujUJ59z0
訂正
println(result.name)
2020/06/17(水) 09:06:37.06ID:WIWN99yTM
今度追加されるRecordは違う?
376デフォルトの名無しさん (ワッチョイ 1aa5-JYV+)
垢版 |
2020/06/17(水) 13:08:59.31ID:NHOh2pyw0
classとstructを分けなかったC++の設計は正しかったのか・・・
2020/06/17(水) 13:29:12.83ID:77mAKNPg0
C++のclassとstructは違うよ
structにも関数が定義できるからclassと同じだと思ってる人いるけどさ
structはメンバーがデフォルトpublicなんだよね
だから従来通り構造体にはstruct使うのが適してる

Javaにもstruct欲しかったなー
アクセサ絶対作れおじさんとかうるさいんだもん
2020/06/18(木) 01:59:35.27ID:tFeZXucj0
>>370
ますますダサくない?
2020/06/18(木) 18:02:53.51ID:5l1ileUM0
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffc10d4f98a, pid=16056, tid=3844
#
# JRE version: OpenJDK Runtime Environment (13.0.1+9) (build 13.0.1+9)
# Java VM: OpenJDK 64-Bit Server VM (13.0.1+9, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C [awt.dll+0x8f98a]

以上のようなエラーが出ます。
swingを使っているせいだと思います。swingを使わないプログラムだと出ません。
Eclipse 2020 だとJDK14、及びJDK11でこのエラーが出ます。
JDK8に戻すとエラーが出なくなります。
Eclipse2019だとJDK13でこのエラーが出て、JDK11でエラーが出ません。
今は2019のEclipse、JDK11で使っていますが、どうしたらいいんでしょうか?
2020/06/18(木) 18:31:09.41ID:CaSO8/BuM
Exlipseカンケーあんのそれ?
2020/06/18(木) 18:43:21.08ID:6yHSa05a0
Javaやると拒絶反応起こすんだが、またCの勉強やりたくなってきた
2020/06/18(木) 20:51:11.15ID:ao9b7VBWa
>>379
オラクルJDK11を使ってswingで書いたのを
OpenJDK13でコンパイルしようとしてるの?
JRE13のawt.dllのアクセス違反って出てるから
エクリプスの実行環境設定を変えるか
Windows10のコントロールパネルのJavaアイコンから環境設定のチェックしてみたら?
2020/06/18(木) 20:54:17.30ID:71BrrFu90
環境変数設定しないでJava扱う方法ない?
フルパスならいけるが。
2020/06/19(金) 00:20:01.01ID:eY6TPFbX0
>>383
Javaのディレクトリに移動したらいい
2020/06/19(金) 07:02:33.99ID:TxCC/8VB0
>>382
設定 → Java → コンパイラー
コンパイラー準拠レベル 13 にしておいて、

プロジェクトのJREシステム・ライブラリーを11と13で切り替えると13でエラーになります。
2020/06/19(金) 08:25:09.17ID:jPC+g1Yo0
>>383
IDE使って、相対パスでJDK設定すれば?
2020/06/19(金) 18:44:18.68ID:iM320/JZ0
>>384
その手があったかthx

>>386
客先端末にそんなもん入れられん
2020/06/19(金) 19:45:00.42ID:xzLNn8Un0
コマンドプロンプトやbatファイル単位で環境変数を設定すればシステム全体には影響を与えないよ
389デフォルトの名無しさん (ワッチョイ b761-LS63)
垢版 |
2020/06/19(金) 21:17:36.67ID:usppWfs40
>>387
だまされんなw
2020/06/20(土) 00:45:09.58ID:YZMPfrl80
フルパスを変数として使えばその変数を呼ぶだけで呼び出せるが
2020/06/20(土) 04:24:46.92ID:Os5dy8je0
コレクションクラスで、要素の昇順の取りだしとその削除を同時にでき、かつならび順を判定するデータに重複を許すクラスはありますか?やりたいことは例えば、

作業のリストから最も優先度の高いものを取りだし作業した結果、さらに複数の作業が発生し、それを優先度のつきで元の作業リストに追加登録したあと、更新後の作業リストについて同じことを繰り返す。(同じ優先度の作業が複数存在する)

といったことです。(実際の処理はもう少し複雑です)
2020/06/20(土) 04:39:38.15ID:Os5dy8je0
Comparable なオブジェクトを TreeSet に入れてみましたが、compareTo()==0 な2つオブジェクトは共存できずダメでした。(Comparable の API ドキュメントのequalsの説明どおり)
2020/06/20(土) 09:34:44.36ID:GUrzgoSo0
PriorityQueue
2020/06/20(土) 11:34:49.78ID:Os5dy8je0
>>393
ありがとうございました。まさに求めていたものでした。
自分で探せずおはずかしい。
395デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 17:52:44.82ID:Xb49DC620
Java初心者です。
プロパティーファイルを読み込む問題でエラーが出てしまい困っております。

まずeclipse上でプロパティーファイルを作成して、次にFileInputStreamを使ってファイルのストリームを作成して、propertiesクラスを使ってストリームからロードし、try-catch-finallyを用いて、
nation1,nation2に対応するプロパティーをそれぞれ表示するコードを作成したいです。

私は以下のように作成したのですが2つうまくいかない点があります。

・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。

・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。


重い様なので二つに分けますね。
396デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 17:54:34.75ID:Xb49DC620
ーーーーーーーーーーーーーーー
<プロパティーファイル名:java.properties>
#国の名前を表示したい
nation1=japan
nation2=china
nation3=brazil
ーーーーーーーーーーーーーーー
397デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 17:54:46.85ID:Xb49DC620
以下の様に作成しましたがエラーが出ます。
ーーーーーーーーーーーーーーー
package main;
import java .io.FileInputStream;
import java .io.IOException;
import java .io.InputStream;
import java . until.Properties;
public class Main{
public static void main(String[] Argos){
properties pr= new properties();
String strpass = “Users/Shared/java/properties/java. properties”;//ファイルが見つかりません
try{
InputStream istream =new FileInputStream(strpass);
pr.load(istream);
System.out.println(pr.getProperty(“nation1”));
System.out.println(pr.getProperty(“nation2”));
}
catch(IOException e) {
e.printStackTrace();
}
finally{
pr.close();//エラー表示
}
}
}
ーーーーーーーーーーーーーーー

こちらのサイトを参考にしました
https://www.sejuku.net/blog/20794
2020/06/25(木) 18:08:20.89ID:mBx+9mpL0
文字コードかも
try {
InputStream istream = new FileInputStream(propertiesPass);
InputStreamReader isr = new InputStreamReader(istream, "UTF-8");
properties.load(isr);
} catch (IOException e) {
e.printStackTrace();
}
2020/06/25(木) 18:12:40.38ID:oGWS7APta
これそのままコピペしてる?手打ち?
java.propertiesの拡張子の前にスペース入ってるけど
400デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 18:18:05.89ID:Xb49DC620
>>399
コピペではなくて手打ちですね。
確かにjava.propertiesの所にスペースが入ってました。すみません。
2020/06/25(木) 18:37:52.21ID:oGWS7APta
相対パスの指定あってるのかな?
絶対パスにしてみてうまく行ったりしない?
402デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/25(木) 18:52:36.61ID:jGqj5Ydq0
>>395
>・最後にfinallyを用いてストリームを閉じたいのですが、pr.close();とするとエラーが出ます。

prはProperties型の変数
Propertiesはストリームではないしcloseメソッドはないよ

>・相対パスを用いて “Users/Shared/java/properties/java. properties”とファイルの場所を指定したのですが、実行する事が出来ません。

実行時のカレントディレクトリからの相対パスだから
実行時のカレントディレクトリがどこなのかわからんから相対パスの指定が正しいかわからない
ファイルが見つからないのなら間違ってると思う

> https://www.sejuku.net/blog/20794

リソースリークしまくり・・・これを真に受けてプログラムを覚える人がいると思うと・・・
403デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/25(木) 18:56:00.97ID:jGqj5Ydq0
try (var in = new FileInputStream(strpass)) {
  pr.load(in);
}

ストリームを閉じるのはこれでよい
404デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 19:58:50.86ID:Xb49DC620
>>401
絶対パスにして実行しても何も起きないですね…
String strpass = “java.properties”;

>>402
ありがとうございます。
eclipseで相対パスを求めるにはどうすれば良いですか?
無知ですみません。

>>403
すみません。問題にfinallyを用いてストリームを閉じるようにとの指定があるので…
405デフォルトの名無しさん (ワッチョイ 3fa5-C4gh)
垢版 |
2020/06/25(木) 19:59:42.08ID:YILGQb5k0
そのサイトは先にC言語でもゴミを排出してる

侍エンジニア塾のC言語のサンプルがヤバすぎる。 - Qiita
ttps://qiita.com/hamichamp/items/7b7a7ee091a6856ac900

ハッキリ言ってこの世に存在しちゃいけないクオリティだよ
日本の生産性下げるためにわざと、としか思えない
406デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/25(木) 20:47:36.04ID:Xb49DC620
>>405
そうなんですね。信用していたのですが…
教えて頂いてありがとうございます。
407デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/26(金) 01:56:48.85ID:Pmgb6tek0
>>404
> String strpass = “java.properties”;
コレハ絶対パスとは言わないよ、ファイル名だよ、ルートディレクトリからのパスを記述するのが絶対パス

> eclipseで相対パスを求めるにはどうすれば良いですか?
System.out.println(Path.of("").toAbsolutePath().normalize());

> 問題にfinallyを用いてストリームを閉じるようにとの指定があるので…

明示的に閉じるならこんな感じ

var in = new FileInputStream(strpass);
try {
  pr.load(in);
} finally {
  in.close();
}

tryの中で例外が投げられてfinallyでも例外が投げられると
例外の情報が上書きされてしまうから業務でプログラム書くことになったら
try-with-resourcesを使ったが良いよ
408デフォルトの名無しさん (ワッチョイ 3f7c-1TtA)
垢版 |
2020/06/26(金) 16:19:11.98ID:xWZZRBL00
>>407
絶対パスで実行したところうまく行くことが出来ました。
もっと勉強します。

みなさん本当にありがとうございました。
409デフォルトの名無しさん (アウアウウー Sad3-L1xV)
垢版 |
2020/06/28(日) 10:13:11.31ID:cGnhG6nOa
>>2さんがちょっと進歩したくらいの超初心者です
オープンJDK最新版(14.0.1)インストールして環境設定?みたいなのもググって見よう見まねでやりました
それでメモ帳とコマンドプロンプトでまたも見よう見まねで簡単なコードを書いてコンパイルして実行しようとするとエラー
調べてみるとJREのバージョンが古いから最新のやつには対応してないみたいな感じでした
JDKにはJREも含まれてるはずなのでおかしいなと思いましたがPCに元から入っているJREが悪さをしてるんじゃないかと思ってJRE8(1.8.0?)を1度削除しました
そして再度実行しようとすると今度はJREがないので実行できないと…
結局JRE8をインストールしなおしJDKのバージョンを8まで下げて解決させましたがどういうことだったんでしょうか
無知ですみません
410デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/28(日) 10:42:25.35ID:qNzQpEfW0
>>409
Java 14でコンパイルしたものをJava 8で実行しようとしたのじゃないかな
411デフォルトの名無しさん (アウアウウー Sad3-L1xV)
垢版 |
2020/06/28(日) 11:50:16.52ID:cGnhG6nOa
>>410
それはそうなんですが、JDK14ってインストールするだけ(正確にはそうではないですが)で書くのも実行もできるようになってるんじゃないんですか?
自分はそう思ってたんですが…
412デフォルトの名無しさん (ワッチョイ ff01-fk+3)
垢版 |
2020/06/28(日) 11:54:41.46ID:qNzQpEfW0
>>411
それは知らない
僕は事象だけみて説明がつく理屈を考えた
2020/06/28(日) 12:59:03.01ID:HALCIzQn0
どのJREで実行するからちゃんと指定したいなら、コマンドプロンプトから java.exe もしくは javaw.exe をフルパスで叩いて直接実行しなよ
2020/06/28(日) 13:32:14.06ID:gpvPUA3V0
OSさんからしてみりゃ、どっちのjava.exeですか?弊社にはjava.exeは2人おりますが…ってな感じだ
環境変数でパスを通す方法と優先順位を調べるとよい
415デフォルトの名無しさん (アウアウエー Sabf-PKxn)
垢版 |
2020/06/28(日) 16:07:45.40ID:h6Ozp34ka
javac コマンドにtarget 1.8オプションなかったけ?
416デフォルトの名無しさん (ワッチョイ 3fad-p8b5)
垢版 |
2020/06/28(日) 21:19:16.18ID:7UQn/xBi0
>>409
よくわからないが8のjreだけでなくjdkもアンインストールしてみたら?
2020/06/29(月) 03:23:18.98ID:ze6DZkOI0
例えばコマンドプロンプトで、メモ帳の.exe を探す。
もし複数表示されたら、上の方が実行される

where notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe

つまりグローバルで、notepad というコマンドは、
上の方の.exe に関連付けられている

これが環境変数PATH。
環境変数には、(ユーザー)環境変数とシステム環境変数の2つある。
(ユーザー)環境変数は、そのユーザーだけに適用されるが、
システム環境変数は、すべてのユーザーに適用される

環境変数PATHを知らない香具師は、すべてのOS でプログラミングできない!
418デフォルトの名無しさん (ワッチョイ 3f61-x+MM)
垢版 |
2020/06/29(月) 16:34:52.03ID:aYLVTpU+0
Rubyいわないんだ。
2020/06/29(月) 19:08:08.60ID:tebmIlQa0
香具師ってなんですか…
2020/06/29(月) 19:50:38.78ID:s7d57z44M
香具師
ヤシ
ヤツ


2ちゃんねるがまだアンダーグラウンドだった暗黒時代に流行った隠語だよ
421デフォルトの名無しさん (ワッチョイ 3fad-p8b5)
垢版 |
2020/06/29(月) 21:21:37.32ID:o17FnYvx0
アンダーグラウンドというよりは昔から便所の落書き
2020/06/29(月) 21:29:17.13ID:6d9dL1u1a
痰壺ですよトップの絵は
2020/06/30(火) 09:58:33.47ID:qX2MPAZ00
Java の正規表現で、メタ文字じゃないのにエスケープできる文字って、単にミスを回避する目的のためだけですかね?
例えばセミコロンとか正規表現のメタ文字じゃないからエスケープする必要ないけど、\; と書いてもエラーでませんよね?
2020/06/30(火) 10:31:46.30ID:qX2MPAZ00
\あ とかも出来るのか仕様上
英字以外は意味無しエスケープもできるのね…
2020/06/30(火) 11:09:35.97ID:XllaytC9M
ミス回避にはなってないんじゃね?
意味無しは意味無し。それだけのことだろ。
余分なセミコロンと一緒。
2020/06/30(火) 11:13:15.66ID:NVwlIMqNa
JSPでJavaScriptを吐く時はセミコロンのエスケープいるかも?くらい?
427デフォルトの名無しさん (ワッチョイ 3fa5-C4gh)
垢版 |
2020/06/30(火) 20:32:26.69ID:+e+FbMSY0
perl時代の謎機能を引き摺ってるとか
正規表現のパターンそのものをprintしたいとか
その時は全部の文字の前にとりあえず¥を差し込めばいい

なんにせよ正規表現の闇は深い
2020/07/03(金) 09:11:25.54ID:L4tF4yhqM
logをファイルに出力したいのだが、何か参考になるサイト等教えてくれまいか?
2020/07/03(金) 09:33:11.23ID:r9jTvXIP0
>>428
https://www.google.com
430デフォルトの名無しさん (アウアウエー Sa82-h0J+)
垢版 |
2020/07/03(金) 12:50:59.34ID:/+eVmD+ma
>>428
Javaのエラーをファイルにリダイレクトする
https://web.plus-idea.net/2012/04/java-redirect-error/
431デフォルトの名無しさん (アウアウウー Sacf-Im8i)
垢版 |
2020/07/03(金) 20:58:37.91ID:utx4gTp9a
>>428
java logger とかのキーワードで検索すると沢山出てくると思う。
2020/07/22(水) 19:24:29.24ID:h+C0qpet0
android開発でも同様にログはかせんと
2020/08/06(木) 08:56:12.42ID:KV4/CgyK0
swingでウィンドウアプリケーション作りたいんやがやり方がわからんので教えて頂きたいです。
とりあえず一旦ウィンドウ表示させる所からやりたいんやけどそのやり方が分からん。
言語はJavaで開発環境はAtom
ドシロート丸出しの質問失礼しますm(_ _)m
2020/08/06(木) 09:13:01.91ID:sL8T8qE90
それは大変でございましたね。
自力で最低限の部分すら調べられないのであれば、
まあswingとはご縁がなかったということで。
2020/08/06(木) 09:15:53.80ID:sL8T8qE90
そうそう、ドシロート丸出しじゃないですよ。
ドシロートというのは自分で調べる努力くらいはしているものです。
よって、何がわからないかくらいは把握しているものです。

あなたの場合は、努力を放棄して、全てを召使にでもやらせる感覚ですね。
人間のクズ丸出し、とでも申しましょうか。
他人を便利な道具としてしか見ていない、まあ端的に申しまして
ただのキチガイでございますね。
2020/08/06(木) 09:30:42.73ID:Z0IRQC5l0
5chや掲示板の利用者としてドシロートという意味なら間違いではないと思うよ
2020/08/06(木) 09:31:20.11ID:KV4/CgyK0
色々本読んだりネットで調べたりして調べたんですが…
すみません…
2020/08/06(木) 09:35:23.02ID:Z0IRQC5l0
>>437
ここで手取り足取り教えることなんてできないんだから、質問内容をもっと具体的に絞り混んだりしないと答えようがないよ。
まずは一通りやりたいことがかかれてる入門書を買って頭から順に学習して、具体的に分からないことが出てきたらそれを質問してみたら誰か答えてくれると思うよ。
2020/08/06(木) 09:47:52.41ID:KV4/CgyK0
具体的…
atomのスクリプト使ってGUIの実行は出来ないのですか?
2020/08/06(木) 10:00:15.02ID:HKTR85QV0
掲示板でSwingのウィンドウの出し方から教えるってのは無理があるねえ
初歩から解説してる良いサイトないですか?という質問だったら分からなくもないんだが

Googleで検索したら解説サイトくらい見つかるだろ?
プログラミングは躓く部分多いから検索の仕方を覚えることから始めたほうがいいよ
441デフォルトの名無しさん (ワッチョイ 1b01-h+bK)
垢版 |
2020/08/06(木) 10:55:29.86ID:VfUrQYoq0
>>440
NetBeansでJFrameを作成して実行すればいい
1行で説明可能
442デフォルトの名無しさん (ワッチョイ 1b01-h+bK)
垢版 |
2020/08/06(木) 10:57:05.73ID:VfUrQYoq0
Atomは窓から投げ捨てます
2020/08/06(木) 12:44:38.91ID:P5PbgXc5a
atom触ったことないけどjavaのコード実行できるならGUIだろうと実行できるだろう
444デフォルトの名無しさん (テテンテンテン MM8b-/Jt2)
垢版 |
2020/08/06(木) 13:00:45.70ID:2+xjLJ7WM
>>433
JavaDrive
Home
Swingを使ってみよう
https://www.javadrive.jp/tutorial/
メモ帳にコピペしてjavacでコンパイルしてjavaで実行するべし

import javax.swing.JFrame;

class JSample1_2{
  public static void main(String args[]){
    JFrame frame = new JFrame("MyTitle");
    frame.setBounds(100, 100, 600, 400);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
}
2020/08/06(木) 14:57:33.42ID:9yBY+nPJM
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Container;
import java.awt.BorderLayout;

class Sample extends JFrame{
 public static void main(String args[]){
  Sample frame = new Sample("MyTitle");
  frame.setVisible(true);
 }

 Sample(String title){
  setTitle(title);
  setBounds(100, 100, 600, 400);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  Container contentPane = getContentPane();

  JButton nbtn = new JButton("NORTH_Button");
  contentPane.add(nbtn, BorderLayout.NORTH);
  JButton sbtn = new JButton("SOUTH_Button");
  contentPane.add(sbtn, BorderLayout.SOUTH);
  JButton ebtn = new JButton("EAST_Button");
  contentPane.add(ebtn, BorderLayout.EAST);
  JButton wbtn = new JButton("WEST_Button");
  contentPane.add(wbtn, BorderLayout.WEST);
  JButton cbtn = new JButton("CENTER_Button");
  contentPane.add(cbtn, BorderLayout.CENTER);
 }
}
446デフォルトの名無しさん (ワッチョイ 1b01-h+bK)
垢版 |
2020/08/06(木) 19:08:30.52ID:VfUrQYoq0
>>444,445
お前ら・・・

SwingのイベントはEvent Dispatch Threadで処理されるのだけれども
SwingのコンポネントはスレッドセーフではないのでEDT以外のスレッドで
インスタンス作ったり状態を変えたりするとデータ競合が起こるよ

mainメソッドはmainスレッドで処理されるのだけれども
mainスレッドはEDTとは違うものなので例外ではないよ

ちゃんと書くならこう
public static void main(String[] args) {
 EventQueue.invokeLater(new Runnable() {
  public void run() {
   try {
    MainFrame frame = new MainFrame();
    frame.setVisible(true);
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
 });
}

GUIデザイナを使えばソースが自動生成されるからそれを参考にするのが良いと思う
GUIデザイナはNetBeansなら最初から使える、EclipseならMarketplaceでWindowBuilderをインストールできる
EclipseのWindowBuilderはOracle JDK8じゃないと動かないかも
447デフォルトの名無しさん (アウアウカー Saad-/Jt2)
垢版 |
2020/08/06(木) 19:18:36.12ID:nx4HEXSEa
//んどくせぇからコレで良いよ
import javax.swing.JFrame;
class a{ public static void main(String a[]){
  new JFrame().setVisible(true);
} }
2020/08/07(金) 22:40:01.40ID:831Yvcil0
他人のMODを改造して、オレすげ〜 したいのに
リバースできないんだ。JAVAアプリのウィンドウが最近、絵画調に
すげー見にくい。ググっても同じ症状のやついないし、わかる人いる?
https://i.imgur.com/59nyRLW.png
449デフォルトの名無しさん (ワッチョイ e122-Ea0s)
垢版 |
2020/08/08(土) 05:56:10.26ID:Dj/VOa590
このようなバグが出ました
オラクルのサイトの説明等も見たのですがよくわかりませんでした。
改善方法等わかる方いましたら教えていただけると幸いです。


  # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffcee97f74a, pid=12912, tid=8984
#
# JRE version: Java(TM) SE Runtime Environment (14.0.2+12) (build 14.0.2+12-46)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C [awt.dll+0x8f74a]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
450デフォルトの名無しさん (ワッチョイ 1361-I3qO)
垢版 |
2020/08/08(土) 06:37:17.17ID:+mzacAgD0
JVM側のバグじゃないか?
グダグダ悩むよりバージョン乃至リビジョンを変えてみるのがいいだろう。
2020/08/08(土) 06:42:42.73ID:hMmkStZ70
>>449
JDKのバージョンを下げる。
452デフォルトの名無しさん (ワッチョイ 1b02-I3qO)
垢版 |
2020/08/08(土) 07:05:34.92ID:7VAw6OMl0
>>448
エスパー募集ってちゃんと書いとけ
453デフォルトの名無しさん (ワッチョイ e122-Ea0s)
垢版 |
2020/08/08(土) 07:19:37.31ID:Dj/VOa590
>>450
JDK入れなおします
推奨のヴァージョンとかってありますか?
2020/08/08(土) 07:58:46.55ID:Teg6jmuF0
推奨バージョンはない
awt.dllのクラッシュはJDKが新しければ出ないというわけでもない
新旧いろいろ試してみるしかあるまい
455デフォルトの名無しさん (ワッチョイ e122-Ea0s)
垢版 |
2020/08/08(土) 08:34:16.98ID:Dj/VOa590
>>454
14から13に落としてもダメだった…
2020/08/08(土) 08:46:54.94ID:hMmkStZ70
たぶん1.8なら行ける。
457デフォルトの名無しさん (ワッチョイ e122-Ea0s)
垢版 |
2020/08/08(土) 09:00:07.11ID:Dj/VOa590
>>456
11もダメだった
1.8やってみる
2020/08/08(土) 09:06:25.21ID:Teg6jmuF0
いやメジャーバージョンだけでなくマイナーバージョンも変えてみて
たとえばIntellJのawt.dllクラッシュはJDK11.0.6で発生してたけどJDK11.0.5では発生しないとかあった
バグフィックスはマイナーバージョンのほうが重要
2020/08/08(土) 09:08:53.25ID:Teg6jmuF0
多くのマイナーバージョンを試せるLTS(1.8または11)がよい
9,10,12,13,14はサポート期間が短くマイナーバージョンが少ないから
460デフォルトの名無しさん (ワッチョイ e122-Ea0s)
垢版 |
2020/08/08(土) 09:16:50.07ID:Dj/VOa590
>>458
>>459
アドバイス見れてなかったすまん
とりあえず1.8にしてできるようにはなりました
このアドバイスは後々の参考にします
ありがとうございます
教えてくださった皆さんありがとうございました。
2020/08/08(土) 09:32:40.91ID:hMmkStZ70
この先ずっと1.8を使い続けなければならないのか、そこが不安なんですけど。
最新のJDKで使えるようにする方法があるのか、または今後修整されるのか、そこはどうなんでしょうね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況