我创建的这些脚本遇到了一些(非常烦人的)麻烦。

Sburb.java

import java.awt.Color;
import javax.swing.*;

public class Sburb
{
public static void main (String[] args)
{
    JFrame frame = new JFrame ("Welcome to Sburb");
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    spirograph page = new spirograph();
    progressbar bar = new progressbar();

    frame.getContentPane().add(page);
    frame.getContentPane().add(bar);
    frame.pack();
    frame.setVisible(true);
    frame.setResizable(true);
    }
}


progressbar.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class progressbar extends JPanel
{

JProgressBar current;
JTextArea out;
JButton find;
Thread runner;
int num = 1;

progressbar()
{
    super();

    //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel pane = new JPanel();
    pane.setLayout(new FlowLayout());
    current = new JProgressBar(0, 2000);
    current.setStringPainted(false);
    pane.add(current);
    //setContentPane(pane);
}


public void iterate() {
    while (num < 2000) {
        current.setValue(num);
        try {
            Thread.sleep(300);
        } catch (InterruptedException e) { }
        num += 5;
    }
}

//    public static void main(String[] arguments) {
//        progressbar frame = new progressbar();
//        frame.pack();
//        frame.setVisible(true);
//        frame.iterate();
//   }
}


spirograph.java

import java.awt.Color;

import java.awt.FlowLayout;


import javax.swing.ImageIcon;

import javax.swing.JLabel;
import javax.swing.JPanel;


public class spirograph extends JPanel
{
private ImageIcon image;
private JLabel label;
private JLabel frame = new JLabel();
private JPanel panel = new JPanel();

 spirograph()
{

    this.setOpaque(true);
    this.setBackground(Color.BLACK);

    setLayout(new FlowLayout());
    image = new ImageIcon(getClass().getResource("Gate.gif"));
    label = new JLabel(image);
    add(label);

    progressbar bar = new progressbar();
    }
}


我正在尝试将文件“ progressbar”调用到Sburb文件,但是当我这样做时,它只是给了我这个简单的JFrame(不固定):

http://imgur.com/1aAmPwJ

当我摆脱“ frame.getContentPane()。add(bar);”在Sburb.java中,它给了我这个(固定的):

http://imgur.com/15aGtT2

我该如何解决?我到处都看过了,但还是想不起来!我似乎也无法弄清楚如何在gif下方直接对齐栏。

最佳答案

frame.getContentPane().add(page);
frame.getContentPane().add(bar);


JFrame的内容窗格是BorderLayout的集合,它只能接受任何一种边界布局约束中的一个组件。鉴于此处未提供任何约束,JRE将尝试将它们都放入CENTER中。

由于这个原因以及其他各种原因,我建议您忽略现有的内容窗格,将整个GUI(包括其组成的多个面板)安排到另一个面板中(我们称之为ui),然后调用

frame.setContentPane(ui);

10-06 02:22