2013-10-08 4 views
2
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 


public class Dummy{ 
    String newSelection = null; 

    public void init(){ 
     JFrame jFrame = new JFrame("Something"); 
     jFrame.setVisible(true); 
     jFrame.setSize(new Dimension(600, 600)); 
     jFrame.setLayout(null); 
     jFrame.setBackground(Color.BLACK); 

     final String[] possibleNoOfPlayers = {"Two","Three"}; 

     final JComboBox comboBox = new JComboBox(possibleNoOfPlayers); 
     newSelection = possibleNoOfPlayers[0]; 
     comboBox.setPreferredSize(new Dimension(200,130)); 
     comboBox.setLocation(new Point(200,200)); 
     comboBox.setEditable(true); 
     comboBox.setSelectedIndex(0); 
     comboBox.setVisible(true); 
     comboBox.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent actionEvent) { 
       JComboBox box = (JComboBox) actionEvent.getSource(); 
       newSelection = (String) box.getSelectedItem(); 
       System.out.println(newSelection); 
      } 
     }); 
     jFrame.add(comboBox); 
    } 
} 

Я пытаюсь добавить поле со списком в рамку. но это не видно. если вы нажмете на позицию, она покажет параметры. но это не видно. Пожалуйста, дайте мне знать, если я что-то упустил.Почему jcombobox не отображается?

ответ

4

Три вещи ...

  1. Вы называли setVisible на кадрировании, прежде чем вы добавили его
  2. Вы используете null макеты
  3. Вы не установили размер для comobox, что будет означать, что он будет (эффективно) представлен как размер 0x0. (Ps- setPreferredSize не делать то, что вы думаете, что нужно) ...

Полезности решение ...

Вызов setVisible последнего и использовать соответствующий менеджер компоновки

+0

It Worked !!!. Спасибо –

1

использовать этот один ..

package oops; 

import java.awt.BorderLayout; 

public class jframe extends JFrame { 

private JPanel contentPane; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       jframe frame = new jframe(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the frame. 
*/ 
public jframe() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 

    JComboBox comboBox = new JComboBox(); 
    comboBox.setBounds(159, 81, 189, 41); 
    contentPane.add(comboBox); 
} 
} 
+2

1. Демпинговый код для незнакомых пользователей никогда не бывает особенно полезен без объяснения причин. 2. Макеты 'null' никогда не рекомендуются при работе с пользовательскими интерфейсами на основе компонентов ... – MadProgrammer

+1

Да, он использует ... JFrame jFrame = новый JFrame (« Что-то »); jFrame.setVisible (true); jFrame.setSize (новый размер (600, 600)); jFrame.setLayout (null); jFrame.setBackground (Color.BLACK); должно быть так ... JFrame jFrame = new JFrame («Что-то»); jFrame.setSize (новый размер (600, 600)); jFrame.setBackground (Color.BLACK); jFrame.setVisible (true); jFrame.setLayout (нуль); –

+0

oops извините .... может надеяться, что вы не знаете .. –

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