前提・実現したいこと
javaのswingを勉強しておりguiのプログラムを組もうとしていますが、下のコードで枠線表示させたパネルを300x100のサイズに設定していてもフレームのサイズになってしまいます。指定したサイズ300x100にしたいのですが何が原因なのでしょうか。(2つ目のタブ「機械2」のほうのパネルも同様に50x50のサイズにはなっていません。)
発生している問題・エラーメッセージ
フレームは指定通り800x600になっているが、枠線表示しているパネルが300x100にならず、フレーム枠と同じになってしまう
該当のソースコード
java
1public class Hyouji_sample { 2 public static void main(String[] args) { 3 MyFrameSample mainframe = new MyFrameSample("表示", 800, 600); 4 mainframe.setLocationRelativeTo(null); 5 mainframe.setVisible(true); 6 } 7} 8 9class MyFrameSample extends JFrame{ 10 MyFrameSample(String title, int width, int height){ 11 setTitle(title); 12 setSize(width, height); 13 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 14 15 JTabbedPane tabbedpane = new JTabbedPane(); 16 17 Machine1 machine1 = new Machine1(); 18 Machine2 machine2 = new Machine2(); 19 20 tabbedpane.addTab("機械1", machine1); 21 tabbedpane.addTab("機械2", machine2); 22 23 getContentPane().add(tabbedpane, BorderLayout.CENTER); 24 } 25} 26 27class Machine1 extends JPanel{ 28 Machine1(){ 29 JLabel label = new JLabel(); 30 LineBorder border = new LineBorder(Color.RED, 2, true); 31 32 label.setText("sanpuru"); 33 34 add(label); 35 setPreferredSize(new Dimension(300, 100)); 36 setBorder(border); 37 } 38 39} 40 41class Machine2 extends JPanel{ 42 Machine2(){ 43 JLabel label = new JLabel(); 44 LineBorder border = new LineBorder(Color.RED, 2, true); 45 46 label.setText("sanpuru2"); 47 48 add(label); 49 setPreferredSize(new Dimension(50, 50)); 50 setBorder(border); 51 } 52 53}
コード実行時の状態

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/15 11:41