Eclipseで、「パネル内のボタンを押すと別のパネルが開く」というプログラムを作っているのですが、ボタンを押した後に開くパネル内のコンポーネントの配置を(最初に開くパネルのように)デザインタブで編集する方法はありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
Window Builderを使っていると仮定して回答します。
ファイル→新規→その他→JPanelで新しいパネルを追加して、デザインをクリックして画面を編集すればよい話だと思うのですが、
それとも一つのJPanel内に複数の子JPanelを定義したいという話なのでしょうか?
その場合でも、一番親をCardLayoutにして、子のJPanelを追加すれば、デザインで変更できますが。
以下はソースコードです。
Q106911.java
Java
1import javax.swing.JFrame; 2import javax.swing.SwingUtilities; 3 4public class Q106911 extends JFrame { 5 /** 6 * 7 */ 8 private static final long serialVersionUID = 1L; 9 public Q106911(){ 10 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 11 this.setSize(600, 480); 12 this.getContentPane().add(new MainPanel()); 13 } 14 public static void main(String[] args) { 15 SwingUtilities.invokeLater(() -> new Q106911().setVisible(true)); 16 } 17}
MainPanel.java
Java
1import javax.swing.JPanel; 2import java.awt.CardLayout; 3import javax.swing.JButton; 4import java.awt.event.ActionListener; 5import java.awt.event.ActionEvent; 6import javax.swing.JLabel; 7 8public class MainPanel extends JPanel { 9 /** 10 * 11 */ 12 private static final long serialVersionUID = 1L; 13 14 /** 15 * Create the panel. 16 */ 17 public MainPanel() { 18 setLayout(new CardLayout(0, 0)); 19 JPanel first = new JPanel(); 20 add(first, "name_23628913398839"); 21 22 JButton btnNewButton = new JButton("次画面へ"); 23 btnNewButton.setBounds(48, 116, 101, 25); 24 btnNewButton.addActionListener(new ActionListener() { 25 public void actionPerformed(ActionEvent arg0) { 26 showPanel("name_23656904932933"); 27 } 28 }); 29 first.setLayout(null); 30 first.add(btnNewButton); 31 32 JLabel lblNewLabel = new JLabel("画面1"); 33 lblNewLabel.setBounds(12, 13, 327, 66); 34 first.add(lblNewLabel); 35 36 JPanel second = new JPanel(); 37 add(second, "name_23656904932933"); 38 second.setLayout(null); 39 40 JLabel label = new JLabel("画面2"); 41 label.setBounds(28, 39, 57, 16); 42 second.add(label); 43 44 JButton btnNewButton_1 = new JButton("前画面へ"); 45 btnNewButton_1.addActionListener(new ActionListener() { 46 public void actionPerformed(ActionEvent arg0) { 47 showPanel("name_23628913398839"); 48 } 49 }); 50 btnNewButton_1.setBounds(39, 101, 101, 25); 51 second.add(btnNewButton_1); 52 } 53 public void showPanel(String name){ 54 CardLayout card = (CardLayout)getLayout(); 55 card.show(this, name); 56 } 57}
投稿2017/12/29 16:26
編集2017/12/29 16:33総合スコア5846
0
正しい方法かどうかは自信ありませんが、一つの方法として見てください。
ボタンを押したときのアクション
public void actionPerformed(java.awt.event.ActionEvent e) { nextPanel nextpanel = new nextPanel(); nextpanel.setVisible(true); }
別のパネルのほうは、
public nextPanel() { super(); initialize(); } private void initialize() { this.setBounds(100, 100, 700, 500); this.setContentPane(getJContentPane()); this.setTitle("nextPanel"); }
これで、別のパネルが開きます。
位置の調整はthis.setBounds(100, 100, 700, 500)でできると思います。
投稿2017/12/29 09:35
総合スコア267
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/29 10:00
2017/12/29 10:10
2017/12/29 10:25
2017/12/29 10:26
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/29 23:13