質問内容
質問を評価する
(0ポイント)
|
実行をすると Exception in thread "main" java.lang.NullPointerException at java.awt.Container.addImpl(Container.java:1044) at java.awt.Container.add(Container.java:363) at JComboBoxTest1.<init>(comb.java:31) at JComboBoxTest1.main(comb.java:15) のようなエラーメッセージが出てきます。
全くjavaがわからないので、 どのように改善すれば良いのか、教えてください。 よろしくお願いします。。。
以下がコードです。
import javax.swing.*; import java.awt.BorderLayout; import java.util.Vector; import java.awt.event.*; import java.awt.Color; import java.awt.Component;
class JComboBoxTest1 extends JFrame implements ActionListener{
JComboBox colorCombo; JComboBox lineCombo; JLabel label;
public static void main(String[] args){ JComboBoxTest1 frame = new JComboBoxTest1();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("write your favorite"); frame.setVisible(true); }
JComboBoxTest1(){ String[] colordata = {"red", "blue", "yellow", "black", "pink", "green"}; DefaultComboBoxModel model = new DefaultComboBoxModel(colordata); colorCombo = new JComboBox(model); colorCombo.setMaximumRowCount(3); MyCellRenderer renderer = new MyCellRenderer(); colorCombo.setRenderer(renderer); JPanel p = new JPanel(); p.add(lineCombo); getContentPane().add(p, BorderLayout.CENTER); colorCombo.addActionListener(this);
String[] linedata = {"5", "10", "15", "20"}; DefaultComboBoxModel model2 = new DefaultComboBoxModel(linedata); lineCombo = new JComboBox(model2); lineCombo.setMaximumRowCount(3); MyCellRenderer renderer2 = new MyCellRenderer(); lineCombo.setRenderer(renderer2); JPanel p2 = new JPanel(); p2.add(colorCombo); getContentPane().add(p, BorderLayout.CENTER); lineCombo.addActionListener(this);
JPanel p3 = new JPanel(); p3.add(new JLabel("color:")); p3.add(new JLabel(" line:"));
label = new JLabel(); JPanel labelPanel = new JPanel(); labelPanel.add(label);
getContentPane().add(labelPanel, BorderLayout.PAGE_END); }
public void actionPerformed(ActionEvent e){ String color; String line;
if(colorCombo.getSelectedIndex() == -1){ color = "(not select)"; } else{ color = (String)colorCombo.getSelectedItem(); }
if(lineCombo.getSelectedIndex() == -1){ line = "(not select)"; } else{ line = (String)lineCombo.getSelectedItem(); }
label.setText("COLOR:" + color + " , LINE:"+ line); }
class MyCellRenderer extends JLabel implements ListCellRenderer{ MyCellRenderer(){ setOpaque(true); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){
String data = value.toString(); setText(data.toUpperCase());
if(isSelected){ setForeground(Color.white); setBackground(Color.black); } else{ setForeground(Color.black); setBackground(Color.white); } return this; } } }
|