Почему не работает JList (java) в этом коде?

259
28 марта 2017, 11:24

Есть такой код.

package Journal;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
class Okno extends JFrame {
    ImageIcon iconS = new ImageIcon("addS.png");
    ImageIcon iconM = new ImageIcon("addM.png");
    public JList label;
    JButton sbtn;
    JButton mbtn;
    public Okno() {
        JPanel panel = new JPanel();
        Container cont = getContentPane();
        cont.add(panel);
        setSize(745, 610);
        setTitle("Electronic Journal 3");
        panel.setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setFocusable(true);
        setResizable(false);
        setVisible(true);
        label = new JList();
        label.setBounds(10, 10, 600, 550);
        label.setBackground(Color.white);
        label.setVisible(true);
        label.setOpaque(true);
        panel.add(label);
        String s[] = new String[1];
        s[0]="Vasa Petrov";
        label = new JList(s);
        sbtn = new JButton();
        sbtn.setBounds(625, 10, 100, 100);
        sbtn.setVisible(true);
        sbtn.setIcon(iconS);
        panel.add(sbtn);
        mbtn = new JButton();
        mbtn.setBounds(625, 120, 100, 440);
        mbtn.setVisible(true);
        mbtn.setIcon(iconM);
        mbtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            }
        });
        panel.add(mbtn);
    }
}

Всё работает, но JList не работает. Он виден, но не выводит информацию(просто белый квадрат). Что делаю неправильно?

Answer 1

Вы создаете 2 JList - пустой добавляете на форму, а тот что с данными не добавляете. Поэтому у вас ничего нет.

// первый список
label = new JList();
label.setBounds(10, 10, 600, 550);
label.setBackground(Color.white);
label.setVisible(true);
label.setOpaque(true);
// добавили первый список на форму
panel.add(label);
String s[] = new String[1];
s[0] = "Vasa Petrov";
// второй список
label = new JList(s);
sbtn = new JButton("1");

Вот так будет работать

public Okno() {
    JPanel panel = new JPanel();
    Container cont = getContentPane();
    cont.add(panel);
    setSize(745, 610);
    setTitle("Electronic Journal 3");
    panel.setLayout(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setFocusable(true);
    setResizable(false);
    setVisible(true);
    label = new JList(new String[] {"Vasa Petrov"});
    label.setBounds(10, 10, 600, 550);
    label.setBackground(Color.white);
    label.setVisible(true);
    label.setOpaque(true);
    panel.add(label);
    sbtn = new JButton("1");
    sbtn.setBounds(625, 10, 100, 100);
    sbtn.setVisible(true);
    panel.add(sbtn);
    mbtn = new JButton("2");
    mbtn.setBounds(625, 120, 100, 440);
    mbtn.setVisible(true);
    mbtn.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
        }
    });
    panel.add(mbtn);
}
READ ALSO
Как сделать preloader , кода идет запрос Retroft

Как сделать preloader , кода идет запрос Retroft

Как сделать Preloader, когда идет запрос при использовании библиотеки Retrofit?

234
Как поменять imageview при нажатии на button

Как поменять imageview при нажатии на button

есть три кнопки и одна image view подскажите как менять image view при нажатии на каждую из кнопок

383
не воспроизводиться музыка

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

Я создаю медиа плеерЯ беру файлы из предложеного пути потом беру их название и кидаю их массив, а потом я массив передаются в адаптер и через...

356
java,apache poi, как в excel таблице скрыть колонки

java,apache poi, как в excel таблице скрыть колонки

нелегкая заставила меня связаться с excel таблицамисобсно вопрос

280