Jlist не отображается / появляется в апплете - PullRequest
1 голос
/ 16 октября 2011

По какой-то причине Jlist не будет отображаться в моем апплете.

Отображается справа от ползунка, но только при нажатии на отдельные элементы.

Я пытался this.validate() и this.repaint() без удачи. Может кто-нибудь мне помочь?

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import java.awt.Graphics;
import javax.swing.JList;
import javax.swing.JRadioButton;
import javax.swing.JSlider;
import javax.swing.ListSelectionModel;

public class HeatingHome extends JApplet implements ActionListener
{
        // declare variables here

    JRadioButton switchIt = new JRadioButton();
    JSlider tempControl = new JSlider(JSlider.VERTICAL, 10, 15, 11);


    String[] theRooms = {"Porch", "Kitchen", "Living Room", "Hall", "Bedroom 1", "Bathroom", "Bedroom 2"};   
    JList roomsList = new JList(theRooms);


    public void init()
    {

        setSize(1000,600);


    }

    public void paint(Graphics g)
    {
        super.paint(g);


        roomsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        roomsList.setBounds(700, 200, 150, 150);
        roomsList.setVisible(true);
        roomsList.setEnabled(true);
        add(roomsList);


               //tempControl.addChangeListener(e);
       tempControl.setMajorTickSpacing(10);
       tempControl.setPaintLabels(true);
       tempControl.setMinorTickSpacing(1);
       tempControl.setPaintTicks(true);
       tempControl.setBounds(600, 200, 100, 200);
       tempControl.setEnabled(true);
       add(tempControl);



    }



    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
 }

Ответы [ 2 ]

1 голос
/ 16 октября 2011

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

Возможно, вы начали:

Heating Home

// <applet code='HeatingHome' width=400 height=200></applet>
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class HeatingHome extends JApplet
{
    // declare variables here
    JRadioButton switchIt = new JRadioButton();
    JSlider tempControl = new JSlider(JSlider.VERTICAL, 10, 15, 11);

    String[] theRooms = {"Porch", "Kitchen", "Living Room", "Hall", "Bedroom 1", "Bathroom", "Bedroom 2"};
    JList roomsList = new JList(theRooms);

    public void init()
    {
        // applet size is set by the HTML
        //setSize(1000,600);
        setLayout(new BorderLayout());

        JPanel gui = new JPanel(new BorderLayout(5,5));
        gui.setBackground(Color.ORANGE);
        gui.setBorder(new EmptyBorder(20,20,20,20));

        roomsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        // Use LAYOUTS!!!
        //roomsList.setBounds(700, 200, 150, 150);
        // Becomes visible when added to something!
        //roomsList.setVisible(true);
        // Enabled by default!
        //roomsList.setEnabled(true);
        gui.add(roomsList, BorderLayout.EAST);

        //tempControl.addChangeListener(e);
        tempControl.setMajorTickSpacing(10);
        tempControl.setPaintLabels(true);
        tempControl.setMinorTickSpacing(1);
        tempControl.setPaintTicks(true);
        //tempControl.setBounds(600, 200, 100, 200);
        //tempControl.setEnabled(true);
        //add(tempControl);
        gui.add(tempControl, BorderLayout.WEST);

        gui.add(switchIt, BorderLayout.NORTH);

        add(gui);
        validate();
    }
}
1 голос
/ 16 октября 2011

Вы добавляете множество элементов управления каждый раз, когда апплет раскрашивается.Это означает, что каждый добавляемый вами новый элемент управления будет запускать как минимум еще одну операцию рисования.

Переместите весь код из метода paint в конструктор или аналогичный.

paint предназначен для рисованияуправление визуально самостоятельно.Т.е. вы берете поставляемый объект Graphics и делаете на нем что-то, пока не будете счастливы.Вы обычно ничего не модифицируете, так как рисование в целом немного непредсказуемо.

...