【问题标题】:Jlist not showing up/appearing in appletJlist 未显示/出现在小程序中
【发布时间】:2011-10-16 16:06:21
【问题描述】:

由于某种原因,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.");
    }
 }

【问题讨论】:

    标签: java layout applet jlist japplet


    【解决方案1】:

    虽然每次绘制时都会将列表和滑块添加到小程序中,但从不添加单选按钮。

    这可能会让你开始:

    // <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();
        }
    }
    

    【讨论】:

      【解决方案2】:

      每次绘制小程序时,您都会添加大量控件。这意味着您添加的每个新控件都会触发至少另一个绘制操作。

      paint 方法中的所有代码移出到构造函数或类似方法中。

      paint 用于自己绘制控件的视觉效果。 IE。你拿起提供的Graphics 对象并在它上面做一些事情,直到你满意为止。您通常不会修改任何其他内容,因为绘画通常有点难以预测。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-17
        • 1970-01-01
        • 2013-04-05
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多