2013-10-15 2 views
2

Я создал класс с именем fontlist, и я хочу получить значение Integer из поля Combo, но это дает мне некоторую ошибку.Как получить значение Integer из поля Combo в java?

Как получить значение Integer из поля Combo? Кроме того, я хочу, чтобы изменить размер текста в соответствии с целочисленным значением, которое получает в FontSize Combo Box ...

Мой код:

 import java.awt.*; 
     import javax.swing.*; 
     import java.awt.event.*; 
     import java.util.*; 

     class fontlist extends JFrame implements ItemListener 
     { JComboBox jcb,fontSize; 
     Container content; 
     JTextArea jta; 
     JScrollPane jsp; 
     private static final int[] fontsize = {8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72}; 

     fontlist() 
     { 
     content=getContentPane(); 
     setLayout(null); 
     setBackground(Color.WHITE); 
     jcb=new JComboBox(); 
     content.add(jcb); 
     jcb.setBounds(100,100,100,20); 

     fontSize=new JComboBox(); 
     content.add(fontSize); 
     fontSize.setBounds(200,100,100,20); 
     jta=new JTextArea(); 
     jsp=new JScrollPane(jta); 
     content.add(jsp); 
     jsp.setBounds(100,120,200,200); 
     jcb.addItemListener(this); 
     fontSize.addItemListener(this); 
     String fonts[] = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); 
     for (int i = 0; i < fonts.length; i++) 
     { 
     jcb.addItem(fonts[i]); 
     } 
     for (int j = 0; j <16; j++) 
     { 
     fontSize.addItem(fontsize[j]); 
     } 
     } 
     public void itemStateChanged(ItemEvent ie) 
     { 
     if (ie.getStateChange() == ItemEvent.SELECTED) 
     { 
     System.out.println(""+fontSize.getSelectedItem()); 
      String size = (fontSize.getSelectedItem()+""); 
     System.out.println(size); 
     int size1 =Integer(size); 
     } 
     } 
     public static void main(String args[]) 
     { 
     fontlist fl=new fontlist(); 
     fl.setSize(700,500); 
     fl.setVisible(true); 
     } 

     } 

И ошибка:

enter image description here

+1

используйте IDE, чтобы проверить ваш синтаксис –

+0

Используйте IDE для всего, IDEs awesome

ответ

1

вероятно Вы имели в виду использовать:

int size1 = new Integer(size); 

Или вы могли бы использовать:

int size1 = Integer.parseInt(size); 

(Оба требуют использовать try/catch block to catch NumberFormatException)

1

Изменить

int size1 =Integer(size); 

к

int size1 = Integer.parseInt(size); 

После второй взгляд на ваш код

int size1 = (Integer)(fontSize.getSelectedItem()); 

может также работать.

+0

size - строка, вы не можете отдать ее целому числу. – clcto

+0

@clcto oops, я имел в виду что-то еще, редактирование – Cruncher

0

объявить fontSize, как JComboBox<Integer> fontSize

вам нужно, чтобы знать, что Java трюмные Целое поле со списком Если вы посмотрите на документации для JComboBox, вы заметите, он объявлен как JComboBox<E>. E - это то, что известно как параметр типа и описывает, какие данные будут храниться в JComboBox. Если вы не iunclude, он будет по умолчанию Object

+0

Вам не обязательно, но если вы этого не сделаете, вам придется бросить. – lordoku

+0

@lordoku, но вы бы победили всю цель механизма Generics – vandale

+0

, вы правы. Я просто говорю, что нет жесткого требования. Это определенно лучшие практики для создания механизма генериков. Также это не имеет значения, потому что, даже если вы поставляете общий тип, возвращаемый тип getSelectedItem по-прежнему является объектом. Хотя я предполагаю, что предпочтительным способом является JComboBox.getItemAt (JComboBox.getSelectedIndex), и он вернет общий тип. – lordoku

Смежные вопросы