2014-05-23 2 views
1

그래서 그래서 프레임 만든 WindowBuilder (Ecliple의 최신 버전, 케플러)를 사용하여 : enter image description hereEclipse WindowBuilder에서 CardLayout을 올바르게 구현하는 방법은 무엇입니까?

을하지만 내가 panelWelcome에 생성 한 버튼, 그들 사이를 전환하고 싶습니다. itemListener를 추가 한 다음 카드간에 전환하는 메서드를 만드는 것이 좋습니다. 문제는 이후 진행하는 방법을 모릅니다. 자동 생성 된 코드는 다음과 같습니다.

package client; 

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.CardLayout; 
import java.awt.GridBagLayout; 

import javax.swing.JLabel; 

import java.awt.GridBagConstraints; 
import java.awt.Font; 
import java.awt.Insets; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

import javax.swing.JComboBox; 
import javax.swing.DefaultComboBoxModel; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 

public class Test { 

    private JFrame frame; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        Test window = new Test(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public Test() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(new CardLayout(0, 0)); 

     JPanel panelWelcome = new JPanel(); 
     frame.getContentPane().add(panelWelcome, "name_98933171901972"); 
     GridBagLayout gbl_panelWelcome = new GridBagLayout(); 
     gbl_panelWelcome.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0}; 
     gbl_panelWelcome.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
     gbl_panelWelcome.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE}; 
     gbl_panelWelcome.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; 
     panelWelcome.setLayout(gbl_panelWelcome); 

     JLabel lblTitle = new JLabel("MEMEPlayer"); 
     lblTitle.setFont(new Font("Segoe UI", Font.BOLD, 12)); 
     GridBagConstraints gbc_lblTitle = new GridBagConstraints(); 
     gbc_lblTitle.insets = new Insets(0, 0, 5, 0); 
     gbc_lblTitle.gridx = 5; 
     gbc_lblTitle.gridy = 0; 
     panelWelcome.add(lblTitle, gbc_lblTitle); 

     JLabel lblNewLabel = new JLabel("Welcome! To get started, select a movie from the drop down menu"); 
     lblNewLabel.setFont(new Font("Segoe UI", Font.PLAIN, 11)); 
     GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); 
     gbc_lblNewLabel.insets = new Insets(0, 0, 5, 0); 
     gbc_lblNewLabel.gridx = 5; 
     gbc_lblNewLabel.gridy = 2; 
     panelWelcome.add(lblNewLabel, gbc_lblNewLabel); 

     JComboBox comboBox = new JComboBox(); 
     comboBox.setModel(new DefaultComboBoxModel(new String[] {"The Avengers (2012)", "Monsters, Inc. (2001)", "Prometheus (2012)"})); 
     GridBagConstraints gbc_comboBox = new GridBagConstraints(); 
     gbc_comboBox.insets = new Insets(0, 0, 5, 0); 
     gbc_comboBox.gridx = 5; 
     gbc_comboBox.gridy = 4; 
     panelWelcome.add(comboBox, gbc_comboBox); 

     JButton btnNewButton = new JButton("Next >"); 
     GridBagConstraints gbc_btnNewButton = new GridBagConstraints(); 
     gbc_btnNewButton.insets = new Insets(0, 0, 5, 0); 
     gbc_btnNewButton.gridx = 5; 
     gbc_btnNewButton.gridy = 6; 
     btnNewButton.addItemListener((ItemListener) this); 
     panelWelcome.add(btnNewButton, gbc_btnNewButton); 

     JLabel lblNewLabel_1 = new JLabel(""); 
     lblNewLabel_1.setIcon(new ImageIcon("C:\\temp\\Meme1\\largeVLC.png")); 
     GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints(); 
     gbc_lblNewLabel_1.gridx = 5; 
     gbc_lblNewLabel_1.gridy = 8; 
     panelWelcome.add(lblNewLabel_1, gbc_lblNewLabel_1); 

     JPanel panelVideo = new JPanel(); 
     frame.getContentPane().add(panelVideo, "name_98968999152440"); 
    } 
} 

감사합니다!

+0

이 질문에 대한 답변이 나에게 도움이되지 .. 내 조언은 U 자, 코드 생성기를 사용하지 마십시오. 양식 레이아웃이나 Mig Layout과 같은 훌륭한 레이아웃 관리자를 사용하십시오. Ur 레이아웃 코드는 몇 줄에 불과하며 생성 된 빌더 코드보다 관리하기가 훨씬 쉽습니다. 좋은 레이아웃 관리자에 대한 링크가 필요하면 알려주세요. – sethu

답변

2

내가 직면 한 문제는 레이아웃을 프레임에 설정하고 있다는 것입니다. 이는 프레임이 한 번에에 표시된 만 가질 수 있다는 의미이므로 문제입니다. 해당 구성 요소 중 하나 인 해당입니다. 그래서 버튼을 넣을 수 있습니다. 버튼은 패널 중 하나에 있어야하는데, 이는 탐색하기가 어려울 수 있습니다.

그래서 대신 CardLayout이있는 주요 JPanel 있고, 그 메인 패널을 카드에 패널을 추가 할 수 있습니다. 그런 다음 탐색을위한 버튼과 함께 메인 패널을 프레임에 추가 할 수 있습니다.

또 다른 옵션은 탐색을 메뉴 옵션으로 제어하기 때문에 카드를 변경하는 옵션이 포함 된 메뉴 막대를 사용하면 프레임에 카드 레이아웃을 유지할 수 있습니다.

CardLayout, 손으로 코딩하는 법을 잘 모르겠다면 How to Use CardLayout을 참조하십시오. 당신은 또한 흥미 this post을 찾을 수 있습니다 레이아웃 및 show() 등의 탐색 방법 중 하나 next(), 또는 previous()

전화에 대한 참조를 필요로하기 위하여려고하고있다. 그것은 Netbeans를 사용하지만 어쩌면 당신이 뭔가를 데리러거야

관련 문제