Модераторы: LSD, AntonSaburov
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Контроли при нажатии кнопки - GUI, Контроли при нажатии кнопки - GUI 
:(
    Опции темы
bulat01
Дата 25.11.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0



Привет спецам по Джава
Нужна ваша помощь.
Есть база - - MySQL. GUI для доступа к таблицам.

Цель:
При нажатии какой либо кнопки - появляется таблица с данными.
К примеру - при нажатии кнопки attendance - появляется таблица с колонками: student_number, unit_number, attendance_date, attended

Я хочу добавить чекбоксы слева от колонки student_number для каждой строки,
а также добавить 2 кнопки - UPDATE, DELETE под строками.

при чекинге одной строки - кнопки UPDATE, DELETE становятся доступными (в зависемости от Роли пользователя - роль так и не смог создать я), 
2 чекинга невозможно было сделать.
Пож-та помогите. Если кто с таким раньше сталкивался.


1-код: authrorize3.java

Код

package test;
import test.DatabaseTableModel;

public class authorize3 extends javax.swing.JFrame {
    private JPanel read_panel;
    private JLabel conn_user;
    public  JLabel conn_database_value;
    private JButton t9_xxx;
    private JButton t8_xxx;
    private JButton t7_unit;
    private JButton t6_student;
    private JButton t5_staff;
    //private JButton t6_student;
    private JButton t4_result;
    private JButton t3_department;
    private JButton t2_course;
    private JButton t1_attendance;
    private JPanel table_panel;
    private JLabel user_role_value;
    public  JLabel conn_user_value;
    private JLabel conn_user_role;
    private JLabel conn_database;

    private String dbAccount_value_auth2;
    public  String dbURL_value_auth2;
    public  String passw_auth2;
    
    public  Connection conn_auth2;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                authorize3 inst = new authorize3();
                //inst.setLocationRelativeTo(null);
                inst.setVisible(true);
            }
        });
    }
    
    public authorize3() {
        super();
        initGUI();
    }
    
    private void initGUI() {
        try {
            setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            this.setTitle("Please select tables");
            authorize1 auth1 = new authorize1();
            //
            {
                read_panel = new JPanel();
                getContentPane().add(read_panel, BorderLayout.NORTH);
                GroupLayout read_panelLayout = new GroupLayout((JComponent)read_panel);
                read_panel.setLayout(read_panelLayout);
                read_panel.setPreferredSize(new java.awt.Dimension(392, 90));                
                
                {
                    conn_user = new JLabel();
                    GroupLayout conn_userLayout = new GroupLayout((JComponent)conn_user);
                    conn_user.setLayout(conn_userLayout);
                    conn_user.setText("Connected User:");
                    conn_user.setRequestFocusEnabled(false);
                    conn_userLayout.setAutoCreateContainerGaps(true);
                    conn_userLayout.setVerticalGroup(conn_userLayout.createParallelGroup());
                    conn_userLayout.setHorizontalGroup(conn_userLayout.createParallelGroup());
                }
                {
                    //authorize2 auth2 = new authorize2();
                    conn_user_value = new JLabel();
                    //conn_user_value.setText(get_db_account());
                    //System.out.println("Last: " + dbAccount_value_auth2);
                }
                {
                    //JLabel conn_db = new JLabel();
                    conn_database_value = new JLabel();
                    //conn_database_value.setText(dbURL_value);
                    //conn_database_value.setText(auth1.db_select_value.toString());
                    //System.out.println("Authorize 2 class: "+ auth1.user_variable_value + " "+ auth1.db_variable_value);
                }
                {
                    user_role_value = new JLabel();
                    user_role_value.setText("Role_XXX");
                    
                }
                {
                    conn_database = new JLabel();
                    GroupLayout conn_databaseLayout = new GroupLayout((JComponent)conn_database);
                    conn_database.setLayout(null);
                    conn_database.setText("Database:");
                    conn_databaseLayout.setAutoCreateContainerGaps(true);
                    conn_databaseLayout.setVerticalGroup(conn_databaseLayout.createParallelGroup());
                    conn_databaseLayout.setHorizontalGroup(conn_databaseLayout.createParallelGroup());
                }
                {
                    conn_user_role = new JLabel();
                    conn_user_role.setText("User Role:");
                }
                read_panelLayout.setHorizontalGroup(read_panelLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(read_panelLayout.createParallelGroup()
                        .addComponent(conn_user_role, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 113, GroupLayout.PREFERRED_SIZE)
                        .addComponent(conn_database, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 113, GroupLayout.PREFERRED_SIZE)
                        .addComponent(conn_user, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 113, GroupLayout.PREFERRED_SIZE))
                    .addGroup(read_panelLayout.createParallelGroup()
                        .addGroup(read_panelLayout.createSequentialGroup()
                            .addComponent(user_role_value, GroupLayout.PREFERRED_SIZE, 130, GroupLayout.PREFERRED_SIZE))
                        .addGroup(read_panelLayout.createSequentialGroup()
                            .addComponent(conn_database_value, GroupLayout.PREFERRED_SIZE, 130, GroupLayout.PREFERRED_SIZE))
                        .addGroup(read_panelLayout.createSequentialGroup()
                            .addComponent(conn_user_value, GroupLayout.PREFERRED_SIZE, 130, GroupLayout.PREFERRED_SIZE)))
                    .addContainerGap(137, Short.MAX_VALUE));
                read_panelLayout.setVerticalGroup(read_panelLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(read_panelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(conn_user_value, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 16, GroupLayout.PREFERRED_SIZE)
                        .addComponent(conn_user, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 0, Short.MAX_VALUE)
                    .addGroup(read_panelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(conn_database_value, GroupLayout.Alignment.BASELINE, 0, 16, Short.MAX_VALUE)
                        .addComponent(conn_database, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(read_panelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(conn_user_role, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 16, GroupLayout.PREFERRED_SIZE)
                        .addComponent(user_role_value, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE, GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(19, 19));
            }
            {
                table_panel = new JPanel();
                getContentPane().add(table_panel, BorderLayout.CENTER);
                GroupLayout table_panelLayout = new GroupLayout((JComponent)table_panel);
                table_panel.setLayout(table_panelLayout);
                table_panel.setPreferredSize(new java.awt.Dimension(392, 89));
                {
                    t1_attendance = new JButton();
                    t1_attendance.setText("attendance");        
                    t1_attendance.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent evt) {
                          try{
                             Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/student_courses", "root", "qaz" );
                             Statement st  = con.createStatement();
                             //ResultSet rs = st.executeQuery("select staff_number, forename, surname, date_of_birth from staff");
                             ResultSet rs = st.executeQuery("select * from attendance");
                             
                             DatabaseTableModel model = new DatabaseTableModel();
                             model.setDataSource(rs);
                             JTable table = new JTable(model);
                             JPanel panel = new JPanel(new BorderLayout());
                             panel.add(new JScrollPane(table), BorderLayout.CENTER);
                             JFrame frame_DTM = new JFrame("Database Table Model");
                             frame_DTM.setLocationRelativeTo(null);
                             frame_DTM.setSize(500, 400);
                             frame_DTM.setContentPane(panel);
                             frame_DTM.setVisible(true);
                                
                            }
                             catch (SQLException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (ClassNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                    }});
                }
                {
                    t2_course = new JButton();
                    t2_course.setText("course");
                }
                
                {
                    t4_result = new JButton();
                    t4_result.setText("result");
                }
                {
                    t5_staff = new JButton();
                    t5_staff.setText("staff");
                }
                {
                    t3_department = new JButton();
                    t3_department.setText("department");
                }
                {
                    t7_unit = new JButton();
                    t7_unit.setText("unit");
                }
                {
                    t8_xxx = new JButton();
                    t8_xxx.setText("table 8 x");
                }
                {
                    t9_xxx = new JButton();
                    t9_xxx.setText("table 9 x");
                }
                {
                    t6_student = new JButton();
                    t6_student.setText("student");
                }
                table_panelLayout.setHorizontalGroup(table_panelLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(table_panelLayout.createParallelGroup()
                        .addComponent(t2_course, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 115, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t1_attendance, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 115, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t3_department, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 115, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(table_panelLayout.createParallelGroup()
                        .addComponent(t6_student, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t4_result, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t5_staff, GroupLayout.Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
                    .addGroup(table_panelLayout.createParallelGroup()
                        .addComponent(t7_unit, GroupLayout.Alignment.LEADING, 0, 119, Short.MAX_VALUE)
                        .addComponent(t8_xxx, GroupLayout.Alignment.LEADING, 0, 119, Short.MAX_VALUE)
                        .addComponent(t9_xxx, GroupLayout.Alignment.LEADING, 0, 119, Short.MAX_VALUE))
                    .addGap(7));
                table_panelLayout.setVerticalGroup(table_panelLayout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(table_panelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(t4_result, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 27, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t1_attendance, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 27, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t7_unit, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 28, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(table_panelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(t5_staff, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 26, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t2_course, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 24, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t8_xxx, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                    .addGroup(table_panelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                        .addComponent(t6_student, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t3_department, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 25, GroupLayout.PREFERRED_SIZE)
                        .addComponent(t9_xxx, GroupLayout.Alignment.BASELINE, GroupLayout.PREFERRED_SIZE, 26, GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(81, 81));
            }
            pack();
            setSize(400, 300);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        } catch (Exception e) {
            //add your error handling code here
            e.printStackTrace();
        }
    }
}



2-ой код: DatabaseTableModel.java

Код

package test;

public class DatabaseTableModel extends AbstractTableModel {
        private static final long serialVersionUID = 1L;
        private ArrayList<String> columnNames = new ArrayList<String>();
        private ArrayList<Class> columnTypes = new ArrayList<Class>();
        private ArrayList<ArrayList<Object>> data = new ArrayList<ArrayList<Object>>();
     
        public int getRowCount() {
            synchronized (data) {
                return data.size();
            }
        }
     
        public int getColumnCount() {
            return columnNames.size();
        }
     
        public Object getValueAt(int row, int col) {
            synchronized (data) {
                return data.get(row).get(col);
            }
        }
     
        public String getColumnName(int col) {
            return columnNames.get(col);
        }
     
        public Class getColumnClass(int col) {
            return columnTypes.get(col);
        }
     
        public boolean isCellEditable(int row, int col) {
            return true;
        }
     
        public void setValueAt(Object obj, int row, int col) {
            synchronized (data) {
                data.get(row).set(col, obj);
            }
        }
     
        public void setDataSource(ResultSet rs) throws SQLException, ClassNotFoundException {
            ResultSetMetaData rsmd = rs.getMetaData();
            columnNames.clear();
            columnTypes.clear();
            data.clear();
     
            int columnCount = rsmd.getColumnCount();
            for (int i = 0; i < columnCount; i++) {
                columnNames.add(rsmd.getColumnName(i + 1));
                Class type = Class.forName(rsmd.getColumnClassName(i + 1));
                columnTypes.add(type);
            }
            fireTableStructureChanged();
            while (rs.next()) {
                ArrayList rowData = new ArrayList();
                for (int i = 0; i < columnCount; i++) {
                    if (columnTypes.get(i) == String.class)
                        rowData.add(rs.getString(i + 1));
                    else
                        rowData.add(rs.getObject(i + 1));
            }
                synchronized (data) {
                    data.add(rowData);
                    this.fireTableRowsInserted(data.size() - 1, data.size() - 1);
                }
            }
        }    
}


Добавлено через 2 минуты и 20 секунд
1) добавьте DBurl, DBaccount, DBpassword - статически

2) ну и вас должна быть база по MySQL.
    скрипт создания таблицы attendance:
    CREATE TABLE `attendance` (
  `student_number` char(8) NOT NULL,
  `unit_number` char(6) NOT NULL,
  `attendance_date` date NOT NULL,
  `attended` char(1) NOT NULL,
  PRIMARY KEY (`student_number`,`unit_number`,`attendance_date`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;



3) внесение данных в attendance:
   INSERT INTO `attendance` VALUES ('L0001145','U00313','2004-05-04','A'),('L0001145','U00333','2004-05-03','A'),('L0001234','U00313','2004-05-04','P'),('L0001234','U00333','2004-05-03','A'),('L0002113','U00413','2004-05-03','P'),('L0002113','U00443','2004-05-03','A'),('L0002243','U00213','2004-05-03','P'),('L0002243','U00223','2004-05-05','P'),('L0002243','U00233','2004-05-04','A'),('L0002323','U00313','2004-05-03','A'),('L0002323','U00333','2004-05-04','A'),('L0003234','U00665','2004-05-03','A'),('L0003322','U00121','2004-05-03','A'),('L0003322','U00125','2004-05-04','P'),('L0003322','U00127','2004-05-05','A'),('L0003322','U00165','2004-05-06','A'),('L0003541','U00712','2004-05-03','P'),('L0003541','U00773','2004-05-03','P'),('L0006452','U00665','2004-05-03','P'),('L0007632','U00573','2004-05-03','P'),('L0007632','U00575','2004-05-04','A');
PM MAIL   Вверх
jk1
Дата 26.11.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 21
Всего: 75



Модератор: Название темы должно отражать ее суть!


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.