在Jframe中列出,它将带您进入详细视图

时间:2015-10-15 20:19:49

标签: java swing jframe jpanel jbutton

我是一名专业的PHP开发人员,也是一名学生。所以我有一个问题要问我在Java中正在进行的大学项目。

首先让我解释一下我所处的情况,我正在使用JDBC在Java Swing中创建一个独立的应用程序。该项目类似于一个网站。该项目将有四个模块(SuperUser,Company,Employee,& Project)。

当应用程序启动时,用户将看到登录页面。

Login Page

如果用户未注册,他/她可以通过单击注册按钮进行注册。

有两种类型的用户" 1"管理员和" 2"雇员。

管理员可以选择在成功登录后进入主页管理员。

但员工只能进入前端。

Front End Page

所以我需要一份所有项目的清单。我也可以这样做

但问题是用户何时点击项目列表中的按钮

当然,这将从数据库动态生成!!

与他们不同的身份

??是否可以看到项目的细节。就像在网站上一样?

非常感谢你为我的问题提供宝贵的时刻! 我真的很感激任何帮助,我不止这个问题 6天。我试过搜索互联网上的每一个地方,我都找不到 任何答案。

希望你们能帮忙

2 个答案:

答案 0 :(得分:0)

  

是否可以查看项目的详细信息。就像网站一样

是。基本上,如果您使用BorderLayout之类的内容,则可以将JList放置到WEST位置,将详细信息面板放置到CENTER位置。

选择项目后,您可以使用要显示的数据填充详细信息视图

首先看一下How to use ListsHow to use BorderLayouts作为起点

答案 1 :(得分:0)

  

没有人回答我在寻找的东西!!   我已经完成了项目,这是答案

DbConnect con = null; 
        try { con = new DbConnect(); } 
        catch (ClassNotFoundException | InstantiationException | IllegalAccessException | SQLException e) { e.printStackTrace(); }

        // Retreiving Results 
        try {
            ResultSet res = null;
            res = con.selectQueryBig("select * from tbl_company where owner_id='"+User_Session.getSessionId()+"' ORDER BY id Desc");

            int i=1; 
            if (res!= null){
            while(res.next()){
                //Titles
                PanelDynamic[i] = new JPanel(new WrapLayout(FlowLayout.LEFT,10,0));
                PanelDynamic[i].setPreferredSize(new Dimension(800,40));
                if (i%2 == 0) {
                    PanelDynamic[i].setBackground(new Color(255,255,255,255));
                } else {
                    PanelDynamic[i].setBackground(new Color(255,255,255,200));
                }

                // Name Of Company
                LabelDynamic[i] = new JLabel(res.getString("name"));
                LabelDynamic[i].setHorizontalAlignment( SwingConstants.LEFT );
                LabelDynamic[i].setPreferredSize(new Dimension(240,40));
                LabelDynamic[i].setForeground(new Color(0,0,0));

                // Created date
                LabelDynamicB[i] = new JLabel(res.getString("created"));
                LabelDynamicB[i].setHorizontalAlignment( SwingConstants.LEFT );
                LabelDynamicB[i].setPreferredSize(new Dimension(170,40));
                LabelDynamicB[i].setForeground(new Color(0,0,0));

                // Created date
                LabelDynamicC[i] = new JLabel(res.getString("updated"));
                LabelDynamicC[i].setHorizontalAlignment( SwingConstants.LEFT );
                LabelDynamicC[i].setPreferredSize(new Dimension(170,40));
                LabelDynamicC[i].setForeground(new Color(0,0,0));

                // Button For Read More
                ButtonDynamic[i] = new JButton("Edit");
                ButtonDynamic[i].setHorizontalAlignment( SwingConstants.LEFT );
                ButtonDynamic[i].setPreferredSize(new Dimension(100,40));
                ButtonDynamic[i].setBorderPainted(false);
                ButtonDynamic[i].setFocusPainted(false);
                ButtonDynamic[i].setBackground(new Color(255,255,255,0));
                ButtonDynamic[i].setForeground(new Color(0,0,0));
                ButtonDynamic[i].setIcon(EIco);
                ButtonDynamic[i].setActionCommand( Integer.toString(res.getInt("id")) );

                PanelDynamic[i].add(LabelDynamic[i]);// title
                PanelDynamic[i].add(LabelDynamicB[i]);// Created
                PanelDynamic[i].add(LabelDynamicC[i]);// Created
                PanelDynamic[i].add(ButtonDynamic[i]);// Edit

                panelBoxin.add(PanelDynamic[i]);
                panelBoxin.revalidate();

                i+=1;
            }}
            res.close();
            ResLength = i;
        } 
        catch (SQLException e) { e.printStackTrace(); }

        // Closing Connection
        try { con.release(); con.disconnect(); } 
        catch (SQLException e) {e.printStackTrace(); }

我们真正需要做的是,我们必须使用action commands = primary key id动态生成按钮。

我们必须在循环中编写按钮操作

// Dashboard Button Actions
public class ListenerForCompany implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
// Edit Button Array
        for (int i=0; i< AdminViewObj.ResLength(); i++){
            if(e.getSource()==AdminViewObj.ButtonDynamic[i]){

                // Parsing id
                Integer id =Integer.parseInt(AdminViewObj.ButtonDynamic[i].getActionCommand());

                // loading screen and thread
                AdminViewObj.loadingView.setVisible(true);
                new Thread(new Runnable(){
                    @Override
                    public void run(){
                        try {

                            ProjectManagement.CompanyAddEditView(id);
                            AdminViewObj.dispose();

                            }
                        catch(Exception e) {
                            AdminViewObj.loadingView.setVisible(false);
                            AdminViewObj.ErrorMessage("Could not connect to server");
                        }
                    }

                }).start();

            }// end of for
        }