2015-11-30 58 views
2

我试图在顶部首页,使Java中的GUI窗口,4个选项卡预订游客室。但是,问题是我不确定如何在特定选项卡中实现按钮。JAVA标签设计

更具体地说,我做了一个名为GuestTab的类,我做了1个按钮和1个文本框,但我不知道如何将这些信息传递给Guest标签。所以,如果我不那么清楚,当我点击访客选项卡时,我想要在GuestTab类中创建按钮和文本字段。

我将放置“SEP”类的代码,其中我有我的GUI主要设计和“GuestTab”类,其中添加了“访客”选项卡的内容。

SEP.java:

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JCheckBoxMenuItem; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTabbedPane; 
import javax.swing.event.ChangeEvent; 
import javax.swing.event.ChangeListener; 

public class SEP extends JFrame 
{ 

    private GuestTab GuestTab; 
    private JTabbedPane tPane; 
    private MyButtonListener buttonListener; 
    private MyTabListener tabListener; 
    private JMenuBar menuBar; 
    private JMenu fileMenu; 
    private JMenuItem exitMenuItem; 

    public SEP() 
    { 
    super("Deer Alley Hotel"); 

    buttonListener = new MyButtonListener(); 
    tabListener = new MyTabListener(); 

    exitMenuItem = new JMenuItem("Exit"); 
    exitMenuItem.addActionListener(buttonListener); 

    fileMenu = new JMenu("File"); 

    setJMenuBar(menuBar); 

    tPane = new JTabbedPane(); 

    tPane.addTab("    Home    ", new JPanel(
     new FlowLayout())); 
    tPane.addTab("    Booking   ", new JPanel(
     new FlowLayout())); 
    tPane.addTab("    Guest   ", GuestTab); 
    tPane.addTab("    Room  ", new JPanel(new FlowLayout())); 
    tPane.addChangeListener(tabListener); 

    add(tPane); 

    setSize(575, 452); 
    setVisible(true); 
    setResizable(false); 

    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setLocationRelativeTo(null); 

    } 

    private class MyButtonListener implements ActionListener 
    { 
    public void actionPerformed(ActionEvent e) 
    { 
     if (e.getSource() == exitMenuItem) 
     { 
     int choice = JOptionPane.showConfirmDialog(null, 
       "Do you really want to exit the program?", "Exit", 
       JOptionPane.YES_NO_OPTION); 

     if (choice == JOptionPane.YES_OPTION) 
     { 
      System.exit(0); 
     } 
     } 
    } 
    } 

    public class MyTabListener implements ChangeListener 
    { 
    public void stateChanged(ChangeEvent e) 
    { 

    } 
    } 
} 

GuestTab.java:

import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class GuestTab extends JPanel 
{ 
    private JButton button1; 
    private JButton button2; 
    private JButton button3; 
    private JButton button4; 

    private JPanel panel1; 
    private JPanel panel2; 

    private JTextField text; 

    public GuestTab() 
    { 
    panel1 = new JPanel(); 

    button1 = new JButton("Edit Note"); 
    button2 = new JButton("Check out"); 
    button3 = new JButton("Edit Form"); 
    button4 = new JButton("Search"); 

    text = new JTextField(15); 

    add(panel1); 
    panel1.setPreferredSize(new Dimension(280, 300)); 
    panel1.add(button4); 
    panel1.add(text); 
    setVisible(true); 
    }   

} 
+2

你真的需要修复你的格式化哈哈 – basic

+0

不知道你的意图是什么......它会真正帮助你和那些试图回答你的问题,如果你以可读性的方式格式化你的代码。 (例如:单独的自定义JPanel到单独的.class eetc – andrewdleach

+0

嗯,它不是这样在我的Eclipse :)我使用Ctrl + Shift + F,但这里是) – Seinfeld

回答

1

您没有正确定义您GuestTab。

在这一行:

tPane.addTab("Guest", guestTab); 

将其更改为:

tPane.addTab("Guest", new GuestTab()); 

或者你可以初始化的JPanel。你从来没有真正做到这一点,你刚才说 有客人标签,但你永远不会做任何事,所以你也可以这样做:

private GuestTab guestTab; 

再后来:

guestTab = new GuestTab(); 

侧面说明,从不使用变量定义和类调用的情况相同。确保你使用的是正确的骆驼案件。

+0

非常感谢你= =)它的工作 – Seinfeld

+0

不用担心: )请务必跟踪你在做什么 – basic

+0

我是新手,我一直都迷路嘿嘿:)有一天它可能会顺利:)干杯和ty – Seinfeld