javaのボタン表示等に関する質問
下記のコードはフォームをNORTH、CENTER、SOUTHEに分割して、それぞれのpaneに
ラベルとボタンを表示するものです。
Q1)myFrame.setBounds(350,0, total_x, total_y)をコンストラクターの最初に記述しますと
フォームの表示が正常でなく、コンストラクターの最後では、正常に行なわれます。
この理由等について、コメント頂けますと有り難いです。
Q2)mainに記述してある、下記のコードは無くても、Xでクロースできますが,このコード
の記述は正しいでしょうか
GridLayout_new frame = new GridLayout_new();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
以上お手数ですが、コメント頂けますと大変助かります。
//=============================================
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
public class GridLayout_new extends JFrame{
int panelA_x=200, panelA_y=50;
int panelB_x=200, panelB_y=200;
int panelC_x=200, panelC_y=50;
int total_x=panelA_x;
int total_y=panelA_y+panelB_y+panelC_y;
public static void main(String[] args){
GridLayout_new frame = new GridLayout_new();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
GridLayout_new(){
JFrame myFrame=new JFrame();
myFrame.setTitle("panelA");
// myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示が出来ない
myFrame.setVisible(true);
LineBorder border = new LineBorder(Color.BLACK, 1, true);
//========================
JLabel button1=new JLabel("Label1");
GLabel_Layout(button1, border);
JButton button2 = new JButton("button2");
button_Layout(button2, border);
//========================
JLabel button3=new JLabel("Label3");
GLabel_Layout(button3, border);
JButton button4 = new JButton("button4");
button_Layout(button4, border);
//========================
JLabel button5=new JLabel("Label5");
GLabel_Layout(button5, border);
JButton button6 = new JButton("button6");
//========================
JLabel button7=new JLabel("Label7");
GLabel_Layout(button7, border);
JButton button8 = new JButton("button8");
//========================
JLabel button9=new JLabel("Label9");
GLabel_Layout(button9, border);
JButton button10 = new JButton("button10");
button_Layout(button10, border);
//========================
JLabel button11=new JLabel("Label11");
GLabel_Layout(button11, border);
JButton button12 = new JButton("button12");
button_Layout(button12, border);
//==================================
JPanel p1 = new JPanel();
GridLayout layout1 = new GridLayout(2,2); //2行、2列の設定
layout1.setHgap(2);
layout1.setVgap(10);
p1.setLayout(layout1);
p1.setBackground(Color.GREEN);
p1.add(button1);
p1.add(button2);
p1.add(button3);
p1.add(button4);
myFrame.setSize(panelA_x, panelA_y);
myFrame.getContentPane().add(p1, BorderLayout.NORTH);
//==============================
JPanel p2 = new JPanel();
GridLayout layout2 = new GridLayout(2,2); //2行、2列の設定
layout2.setHgap(2);
layout2.setVgap(10);
p2.setLayout(layout2);
p2.setBackground(Color.GREEN);
p2.add(button5);
p2.add(button6);
p2.add(button7);
p2.add(button8);
myFrame.setSize(panelB_x, panelB_y);
myFrame.getContentPane().add(p2, BorderLayout.CENTER);
//==================================
JPanel p3 = new JPanel();
GridLayout layout3 = new GridLayout(2,2); //2行、2列の設定
layout3.setHgap(2);
layout3.setVgap(10);
p3.setLayout(layout3);
p3.setBackground(Color.GREEN);
p3.add(button9);
p3.add(button10);
p3.add(button11);
p3.add(button12);
myFrame.setSize(panelC_x, panelC_y);
myFrame.getContentPane().add(p3, BorderLayout.SOUTH);
myFrame.setBounds(350,0, total_x, total_y); //正常なformの表示
} //constructor
void GLabel_Layout(JLabel label, LineBorder border){
label.setPreferredSize(new Dimension(80,20));
label.setBorder(border);
label.setBackground(Color.lightGray);
label.setOpaque(true);
}
void button_Layout(JButton button, LineBorder border){
button.setPreferredSize(new Dimension(80,20));
button.setBorder(border);
}
} //main class....GridLayout_new
お礼
いつもいつもありがとうございます。 大変助かってます。 名前でサイズが変わるのは知りませんでした。 Cやアセンブラの感覚でやってたものですから。 なるほど、jarファイルをzipにリネームして見てみるとクラス名がずらりと... がんばってサイズ圧縮してみます。