【问题标题】:I need help on a few things on Java JFrame我需要一些关于 Java JFrame 的帮助
【发布时间】:2015-07-11 07:03:08
【问题描述】:

我已经创建了这个进度代码,现在我希望它在达到 100% 后自动关闭,并在框架中打开一个带有文本的新框架。那我该怎么做呢?

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
class Progress extends JFrame implements ActionListener {

    JProgressBar pb;
    JButton b1;
    Progress() {
        super("Progress");
        setLayout(null);
        b1 = new JButton("Start");
        b1.setBackground(Color.LIGHT_GRAY);             
        pb = new JProgressBar(1,100);
        pb.setValue(0);
        pb.setStringPainted(true);
        pb.setForeground(Color.green);   
        pb.setBackground(Color.pink); 
        b1.setBounds(20, 20, 80, 25);
        pb.setBounds(110, 20, 200, 25);
        pb.setVisible(false);
        add(b1);
        add(pb);             
        b1.addActionListener(this);
        setResizable(false);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public void actionPerformed(ActionEvent e) {
        int i=0;
        if(e.getSource()==b1) {
            pb.setVisible(true);
            try {
                while(i<=100) {
                    Thread.sleep(50);
                    pb.paintImmediately(0, 0, 200, 25);
                    pb.setValue(i);
                    i++;
                }
            } catch(Exception e1) {
                System.out.print("Caughted exception is ="+e1);
            }
        }
    }

    public static void main(String arg[]) {
        logindemo m=new logindemo();
        m.setSize(400,250);
        m.setVisible(true);
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (int) ((dimension.getWidth() - m.getWidth()) / 2);
        int y = (int) ((dimension.getHeight() - m.getHeight()) / 2);
        m.setLocation(x, y); 
    }
}

这是我的进度条的代码。

【问题讨论】:

  • 你的代码和你的问题标题有什么关系?
  • setLayout(null); 1) Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them 以及white space 的布局填充和边框。 2) 使用逻辑一致的缩进代码行和块的形式。缩进是为了让代码的流程更容易理解!
  • 不要使用“后退按钮”编辑帖子!这将消除其他人所做的更改。而是使用标签下方的edit 链接。

标签: java swing jframe progress-bar progress


【解决方案1】:

所以在答案之前。

进度条

在您的代码中,当进度增加时,应用程序的其余部分被冻结。如果你想避免它,最好在另一个线程中有进度条码。但请记住使用 SwingWorker 而不是经典的线程。

还阅读了 Andrew Thompson 在他的 cmets 中提到的内容。

要“关闭”或隐藏主框架,您可以调用这些方法之一

setVisible(false);

dispose();

要打开新的窗口/框架或其他任何东西,您必须将它放在 while 循环之后。您可以使用下面的代码检查它,只需将此方法添加到您的类中并在循环后调用它。

    private void dialogMessage() {
    Object[] options = {"OK"};
    int result = JOptionPane.showOptionDialog(this,
            "Done!", "",
            JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE,
            null,
            options,
            options[0]);
    if (result == JOptionPane.OK_OPTION) {
        System.exit(0);
    }
}

要了解有关 JOptionPane 的更多信息,请查看此链接 How to Make Dialogs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 2014-07-18
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多