Обернуть расширенный вид кадра в окне - PullRequest
1 голос
/ 25 сентября 2011

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

Итак, мой первый шаг - сделать значок изображения окна и значок в трее для окна приложения.Дело в том, что приведенный ниже код основан на расширенном FrameView вместо JWindow.

Моя идея - заключить расширенный FrameView в окно.

Может кто-нибудь помочьмне с этим?

Большое спасибо, я был бы признателен.

КОД:

public class DesktopApplication1View extends FrameView implements IProgressDialogObserver
{
    //============================================================
    // Fields
    // ===========================================================

    private Connection connection = new Connection();
    private ProgressDialogUpdater pbu = ProgressDialogUpdater.getInstance();
    private Vector<CourseFromCard> courseListFromCard = new Vector<CourseFromCard>();
    private Vector<School> schoolList = new Vector<School>();
    private Vector<CourseFromFile> courseList = new Vector<CourseFromFile>();
    private int cardReaderRefreshHelper = 0;
    private Student student = null;

    JLabel jLabelBilkaImage = null;

    final String ICON = new File("").getAbsolutePath() + System.getProperty("file.separator") + "src" + System.getProperty("file.separator") + "resources" + System.getProperty("file.separator") + "image" + System.getProperty("file.separator") + "BilKa_Icon_32.png";

    final String PIC = new File("").getAbsolutePath() + System.getProperty("file.separator") + "src" + System.getProperty("file.separator") + "resources" + System.getProperty("file.separator") + "image" + System.getProperty("file.separator") + "BilKa_Icon_128.png";

    private JLabel getJLabelBilkaImage() {
        if (jLabelBilkaImage == null) {
            Icon image = new ImageIcon(PIC);
            jLabelBilkaImage = new JLabel(image);
            jLabelBilkaImage.setName("jLabelBilkaImage");
        }
        return jLabelBilkaImage;
    }

    //============================================================
    // Constructors
    // ===========================================================

    public DesktopApplication1View(SingleFrameApplication app)
    {
        super(app);
        pbu.registriere(this);


        app.getMainFrame().setIconImage(Toolkit.getDefaultToolkit().getImage("icon.png"));

        initComponents();
        refreshConnectionState();
        readFilesFromLocalHDD();
        ResourceMap resourceMap = getResourceMap();
        int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
        messageTimer = new Timer(messageTimeout, new ActionListener()
        {
          public void actionPerformed(ActionEvent e)
            {
                statusMessageLabel.setText("");
            }
        });
        messageTimer.setRepeats(false);
        int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
        for (int i = 0; i < busyIcons.length; i++)
        {
            busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
        }
        busyIconTimer = new Timer(busyAnimationRate, new ActionListener()
        {

            public void actionPerformed(ActionEvent e)
            {
                busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
                statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
            }
        });
        idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
        statusAnimationLabel.setIcon(idleIcon);
        progressBar.setVisible(false);

        // connecting action tasks to status bar via TaskMonitor
        TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
        taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener()
        {

            public void propertyChange(java.beans.PropertyChangeEvent evt)
            {
                String propertyName = evt.getPropertyName();
                if ("started".equals(propertyName))
                {
                    if (!busyIconTimer.isRunning())
                    {
                        statusAnimationLabel.setIcon(busyIcons[0]);
                        busyIconIndex = 0;
                        busyIconTimer.start();
                    }
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(true);
                }
                else if ("done".equals(propertyName))
                {
                    busyIconTimer.stop();
                    statusAnimationLabel.setIcon(idleIcon);
                    progressBar.setVisible(false);
                    progressBar.setValue(0);
                }
                else if ("message".equals(propertyName))
                {
                    String text = (String) (evt.getNewValue());
                    statusMessageLabel.setText((text == null) ? "" : text);
                    messageTimer.restart();
                }
                else if ("progress".equals(propertyName))
                {
                    int value = (Integer) (evt.getNewValue());
                    progressBar.setVisible(true);
                    progressBar.setIndeterminate(false);
                    progressBar.setValue(value);
                }
            }
        });
    }
.........

1 Ответ

1 голос
/ 25 сентября 2011

SingleFrameApplication предоставляет метод getMainFrame (), который возвращает JFrame, используемый для отображения определенного представления.Код, указанный в вашем вопросе, является одним из таких представлений.Если вам нужно работать с фреймом, вероятно, лучше сделать это в подклассе кода SingleFrameApplication, чем в опубликованном вами коде.

Существует руководство по по использованию Swing Application Framework, которое может предоставитьбольше помощи.

...