ここから本文です

入力欄(JTextField)と文字列(JLabel)の位置を指定する方法を教えてください。 ち...

novaさん

2018/2/1618:00:03

入力欄(JTextField)と文字列(JLabel)の位置を指定する方法を教えてください。
ちなみに、僕のソースコードは以下のようになっています。

import java.io.File;
import java.net.MalformedURLException;
import javafx.scene.media.AudioClip;
import javax.swing.*;
import java.awt.Image;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.*;
import javax.swing.JTextField;
import java.awt.Dimension;




public class novagame extends JFrame implements ActionListener{
AudioClip c = new AudioClip(new File("BGM.wav").toURI().toString());
JTextField text1 = new JTextField("", 20);
JButton button2 = new JButton("ゲーム設定");
JButton button3 = new JButton("ゲーム終了");
JButton button4 = new JButton("音声:有り");
JButton button5 = new JButton("音声:無し");
JButton button6 = new JButton("音量変更");
JButton button7 = new JButton("タイトル画面に戻る");
JPanel p = new JPanel();
JPanel p2 = new JPanel();
JLabel label;


public static void main(String[] args) throws Exception {
novagame frame = new novagame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 854, 450);
frame.setTitle("東方RPG");
frame.setVisible(true);


}


novagame(){
label = new JLabel();
p.setVisible(true);
p2.setVisible(false);

ImageIcon icon1 = new ImageIcon("touhou2.jpg");
JLabel label1 = new JLabel(icon1);
p.add(label1);
label1.setOpaque(true);

Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.CENTER);



JButton button1 = new JButton("ゲームスタート");
button1.setBounds(550, 100, 240, 70);


button2.setBounds(550, 350, 240, 70);
button2.addActionListener(this);

button3.setBounds(550, 600, 240, 70);
button3.addActionListener(this);
label1.add(button1);
label1.add(button2);
label1.add(button3);

button4.setBounds(550, 50, 240, 70);
button4.addActionListener(this);
p2.add(button4);

button5.setBounds(550, 50, 240, 70);
button5.addActionListener(this);

button6.setBounds(550, 200, 240, 70);
button6.addActionListener(this);
p2.add(button6);

button7.setBounds(550, 350, 240, 70);
button7.addActionListener(this);
p2.add(button7);
JLabel jl = new JLabel("音量(0から1まで指定):");
jl.setFont(new java.awt.Font(null,0,20));
p2.add(jl);


text1.setSize (100, 20);
text1.setLocation (0, 0);
p2.add(text1);

c.setCycleCount(AudioClip.INDEFINITE);
c.play();

}
public void actionPerformed(ActionEvent event){


if (event.getSource() == button2){
p.setVisible(false);
p2.setVisible(true);
getContentPane().add(p2, BorderLayout.CENTER);
}

if (event.getSource() == button3){
System.exit(0);
}

if (event.getSource() == button4){
c.stop();
p2.remove(button4);
p2.add(button5);
}

if (event.getSource() == button5){
c.play();
p2.remove(button5);
p2.add(button4);
}

if (event.getSource() == button6){
String a = text1.getText();
double vol = new Double(a);
c.stop();
c.setVolume(vol);
c.play();

}

if (event.getSource() == button7){
p.setVisible(true);
p2.setVisible(false);
}


}





}

閲覧数:
92
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

ugnagさん

2018/2/1619:06:03

novahelp_0204さん


JPanelは初期値としてFlowLayoutが設定されています。

コンポーネントの配置を指定したい場合は、レイアウトマネージャーを無指定にすれば可能です。

※JPanelのコンストラクタで指定するか、setLayout(null)とします。


当然のことですが、レイアウトマネージャーが無指定のコンテナにコンポーネントを追加する場合、
コンポーネントの位置やサイズを指定しなければなりません。

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる