Нужна помощь с JComboBox [JAVA]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by PakZ, 1 Aug 2012.

  1. PakZ

    PakZ New Member

    Joined:
    24 Dec 2011
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    Собственно,вот мой класс:

    Code:
    package myframe2;
    
    /**
     *
     * @author PakZ
     */
    import com.mysql.jdbc.Statement;
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import javax.swing.*;
    
    public class Spisok extends JFrame {
    protected String bt1;
    private static int money;
    private static ResultSet rs;
    private static int newMoney=0;
    private Statement str;
    private int count1 = 5;
    private String item;
    
    	public Spisok() {
    
    		super("Список товаров");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setSize(300, 300);
    		String[] items = {
    			"Skype "+count1+"$ ваунчер","Skype "+count1+"$ ваунчер"
    
    		};
    
    		Container content = getContentPane();
    
    		content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
    
    final JButton bt = new JButton("Вы пока не выбрали товар :)");
                    bt.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    bt1=bt.getText();
                    new PopupMenu(bt1);
    
                }
            });
    		
    
                      JLabel lb1 = new JLabel("       ");
                    lb1.setAlignmentX(CENTER_ALIGNMENT);
                    lb1.setBounds(10, 30, 30, 30);
                    content.add(lb1);
    
                    JLabel lb2 = new JLabel("Выберете товар из списка!");
                    lb2.setAlignmentX(CENTER_ALIGNMENT);
                    lb2.setBounds(10, 30, 30, 30);
                    content.add(lb2);
    
    		ActionListener actionListener = new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    				JComboBox box = (JComboBox)e.getSource();
    		                item = (String)box.getSelectedItem();
    		               bt.setText("Заказать "+item+"!");
                                   bt.setAlignmentX(CENTER_ALIGNMENT);
                                   add(bt);
    			}
    		};
    
    		JComboBox comboBox = new JComboBox(items);
    		comboBox.setAlignmentX(CENTER_ALIGNMENT);
    		comboBox.addActionListener(actionListener);
    		content.add(comboBox);
    
    		setPreferredSize(new Dimension(240, 340));
    		pack();
    		setLocationRelativeTo(null);
    		setVisible(true);
    
                    JLabel lb3 = new JLabel("       ");
                    lb3.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(lb3);
    
                    JLabel count = new JLabel ("Введите количество товара");
                    count.setAlignmentX(CENTER_ALIGNMENT);
                    content.add (count);
    
                    JTextField txtcount = new JTextField ("1");
                    txtcount.setAlignmentX(CENTER_ALIGNMENT);
                    txtcount.setBounds(10, 10, 100, 30);
                    content.add (txtcount);
    
                    JLabel lb4 = new JLabel("       ");
                    lb4.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(lb4);
    
                    JLabel cardnumber = new JLabel("Введите номер своей карты");
                    cardnumber.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(cardnumber);
    
                    final JTextField txtcardnumber = new JTextField("");
                    txtcardnumber.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(txtcardnumber);
    
                    JLabel lb5 = new JLabel("       ");
                    lb5.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(lb5);
    
                     JLabel pin = new JLabel("Введите пин-код своей карты");
                    pin.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(pin);
    
                    final JTextField txtpin = new JTextField("");
                    txtpin.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(txtpin);
    
                    JLabel lb6 = new JLabel("       ");
                    lb6.setAlignmentX(CENTER_ALIGNMENT);
                    content.add(lb6);
    
                    JButton resume = new JButton("Рассчитать стоимость!");
                    resume.setAlignmentX(CENTER_ALIGNMENT);
                    content.add (resume);
                    resume.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                 try {
        String testString = "txtcount.getText()";
        money = Integer.valueOf(testString);
        BaseConnect. makeConnection();
        str=(Statement)BaseConnect.conn.createStatement();
        money=money*count1;
          str.executeQuery("select money from client where cardnumber=('"+txtcardnumber.getText()+" add pin =('"+txtpin.getText()+"')");
                if(rs.next()){
                newMoney=rs.getInt(1)-money;
                }
        JLabel result=new JLabel(" ");
        result.setAlignmentX(CENTER_ALIGNMENT);
        result.setText("Сумма в размере "+newMoney+" долларов будет снята с вашего счета. Сумма покупки составляет "+money+"$!");
        add (result);
                    } catch (SQLException ex) {
    
                        System.out.println("Ошибка занесения значений в таблицу "+ex);
            }
                }
            });
    
             JLabel lb = new JLabel("       ");
                    lb.setAlignmentX(CENTER_ALIGNMENT);
                    lb.setBounds(10, 30, 30, 30);
                    content.add(lb);
    
            
    
    
    	}
    
    	public static void main(String[] args) {
    		javax.swing.SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				JFrame.setDefaultLookAndFeelDecorated(true);
    				new Spisok();
    			}
    		});
    	}
    }
    
    1 вопрос - как вывести кнопку bt после выбора определённого значения из списка?
    2 вопрос - как убрать выбор первого значения в списке? Ну,т.е что бы при открытии небыло ничего выбрано. Что-то типо "----"
    3 вопрос - почему у меня при каждом открытии изменяется размер окна,как его зафиксировать (240x340)
    4 вопрос - как назначить действие при нажатии на каждый из объектов из выпадающего списка? (а именно привязка цены по выбору объекта)
    5 вопрос (последний :)) - почему вылетают ошибки при рассчёте стоимости? А именно там где
    Code:
    String testString = "txtcount.getText()";
        money = Integer.valueOf(testString);
    Т.е идет конвертация в int

    Огромное спасибо за ответы![/i]
     
  2. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Эх, ты, копипастер...

    3. setSize(240, 340); вместо setSize(300, 300);
    5. какая ошибка? битва экстрасенсов этажом ниже.

    на остальные вопросы ищи ответы в книге по Swing (например модуль 5 книги Г.Шилдт. Swing. Руководство для начинающих (сам ее сейчас изучаю, но формулировка вопросов не дает возможности ответить на них без задания доп вопросов, а мне лень))
     
    #2 xophet, 2 Aug 2012
    Last edited: 2 Aug 2012