1

好吧,伙计们,谦虚来了。自从我使用 Java Swing 已经有很长时间了,所以我知道这个问题有一些非常明显的解决方案。我想要做的是让所有这些不同的摆动元素出现在一个窗口中。当我运行代码时,什么也没有发生。我什么都没看到。每次我用谷歌搜索答案时,我都会得到有关各种复杂 JPanel 问题的信息,而且我几乎可以肯定这不是一个困难的问题。所以这是我的代码:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;


public class LimoSysDriver extends JFrame implements ActionListener {

    /**
     * @param args
     */
    JLabel title = new JLabel("Thread Test Application");

    JLabel numOne = new JLabel("1");
    JLabel numTwo = new JLabel("2");
    JLabel numThr = new JLabel("3");
    JLabel numFou = new JLabel("4");

    JProgressBar progOne = new JProgressBar();
    JProgressBar progTwo = new JProgressBar();
    JProgressBar progThr = new JProgressBar();
    JProgressBar progFou = new JProgressBar();

    JLabel counterOne = new JLabel(Integer.toString(progOne.getValue()));
    JLabel counterTwo = new JLabel(Integer.toString(progTwo.getValue()));
    JLabel counterThr = new JLabel(Integer.toString(progThr.getValue()));
    JLabel counterFou = new JLabel(Integer.toString(progFou.getValue()));

    JLabel numGrandTot = new JLabel("Grand Total");
    JLabel counterTot = new JLabel();

    JButton start = new JButton();
    JButton pause = new JButton();
    JButton resume = new JButton();


    public LimoSysDriver(){
        setSize(700,300);
        JPanel pane = new JPanel();
        pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS));
        add(pane);
        JPanel lowerPanel = new JPanel();
        lowerPanel.setLayout(new BoxLayout(lowerPanel, BoxLayout.LINE_AXIS));
        add(lowerPanel);

        pane.add(title);
        pane.add(numOne);
        pane.add(progOne);
        pane.add(counterOne);

        pane.add(numTwo);
        pane.add(progTwo);
        pane.add(counterTwo);

        pane.add(numThr);
        pane.add(progThr);
        pane.add(counterThr);

        pane.add(numFou);
        pane.add(progFou);
        pane.add(counterFou);


    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        LimoSysDriver window = new LimoSysDriver();

    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub

    }

}

问题是,窗口根本不显示。一旦我可以解决这个问题,我就可以解决其余的问题。提前谢谢大家。

4

2 回答 2

2

您需要将其设置为可见。利用:

setVisible(true)
于 2013-10-09T13:49:58.223 回答
2

一些技巧:

  • 需要使您的JFrame通话可见setVisible(true)

  • 而不是add(pane)您可以使用setContentPane(pane)替换用作内容窗格的默认容器。

  • 当你完成添加组件和使你的可见之前不要忘记调用pack()方法。JFrame

  • 使用SwingUtilities.invokeLater()在事件调度线程中创建您的 GUI 对象

  • JFrame除非您需要添加一些功能,否则请避免扩展。如果不是这种情况,请改用JFrame变量或类成员。

于 2013-10-09T13:59:47.097 回答