相关疑难解决方法(0)

可以在main之外的类中使用进度条吗?

现在,我的主要是用10行调用一个gui.根据这些行中有多少行有文本,调用9个类中的1个(两行必须有文本).被调用的类执行计算,我希望将进度条绑定到.以下是其中一个被调用类的示例(每个类都相似,但足够不同以保证新类.)我认为问题违反了EDT规则,但我在其上看到的所有示例都涉及到论点.运行代码时会出现框架,但在完成所有计算之前,进度条不会更新.

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

public class twoLoan extends JFrame {

    static JFrame progressFrame;
    static JProgressBar progressBar;
    static Container pane;
    double amountSaved = 0;
    int i = 0;

    public void runCalcs(Double MP, Double StepAmt,
        Double L1, Double L2, Double C1, Double C2,
        Double IM1, Double IM2, Double M1Start, Double M2Start) {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
        }

        int iterations = (int) (MP - (M1Start * M2Start));

        //Create all components
        progressFrame = new JFrame("Calculation Progress");
        progressFrame.setSize(300, …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker jprogressbar

31
推荐指数
1
解决办法
2万
查看次数

Toolkit.getDefaultToolkit().createImage()vs ImageIO.read()

我正在使用Swing创建一个UI,我想在一个图像中显示一个图像JLabel.我使用的代码如下:

 JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg"))));
Run Code Online (Sandbox Code Playgroud)

如果我使用png图像,这可以正常工作,但是当涉及到jpg(只有其中一些)时,我得到一个红色图像(与我在Paint.NET中看到的图像不同).我使用的图像是这个:img.jpg

所以我试过(作为替代方案):

Toolkit.getDefaultToolkit().createImage(new File("img.jpg").getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
  1. 有谁知道为什么会这样?它JPEG是不受支持的特殊格式吗?
  2. 我在这个论坛上看到,大多数人都建议使用ImageIO(例如这里).为什么?

非常感谢

java swing jpeg image javax.imageio

8
推荐指数
2
解决办法
7603
查看次数

MediaTracker - 如何使用它,有什么好处,还是有替代品?

在代码库中,我们继承了MediaTracker的用法总是在每个代码块中本地完成.

new MediaTracker(new Canvas());
mediatracker.addImage(i, 1);
try {
    mediatracker.waitForAll();
} catch (InterruptedException e) { }
mediatracker.removeImage(i);
Run Code Online (Sandbox Code Playgroud)

决定这是低效的,我最终用静态实例和方法替换它:

final static protected MediaTracker mediatracker = new MediaTracker(new Canvas());

static protected void checkImageIsReady(Image i) {
    mediatracker.addImage(i, 1);
    try {
        mediatracker.waitForAll();
    } catch (InterruptedException e) { }
    mediatracker.removeImage(i);
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,没有任何不良影响.

还有另一种可能的方法 - 将MediaTracker附加到每个组件(通常是Frame或JFrame),这强烈暗示构造函数文档采用的方法.

所以我有两个问题:

  1. 如何以及为何使用MediaTracker?

  2. 有什么选择?

java components image awt

6
推荐指数
1
解决办法
7572
查看次数

使用JPanel进行幻灯片效果

我尝试创建一个简单的类,可以像这样滑动JPanel:

+----------+    +------+---+    +----------+
|          |    |      |   |    |          |
| JPanel1  | => | JPane| JP| => | JPanel2  |
|          |    |      |   |    |          |
+----------+    +------+---+    +----------+

我创建了javax.swing.Timer并在课堂上添加了

timer = new Timer(50, this);
timer.start();

static final int frames = 5;
int counter = 0;

actionPerformed(ActionEvent e) {
    if (counter >= frames) {
        timer.stop();
        counter = 0;
    } else {
        counter++;
        jPanel2.setBounds(800 - 800 * counter / frames, 0, 800, 600);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是工作,但非常缓慢.我只有2-3 fps,不知道如何加快这种方法.你能救我吗?

java swing

4
推荐指数
1
解决办法
6668
查看次数

摆动计时器不能正常工作

嗨,我正在研究一个项目(Java记忆游戏),首先我想了解摇摆计时器是如何工作的.首先,我的主要课程实现ActionListenerItemListener.我使用计时器,actionPerformed(ActionEvent e)如果用户选择不同图片的两张卡然后我用timer.start()它给他几秒钟看图片,然后他们将再次关闭.但如果用户选择两张不同的图片,他们会突然关闭,所以我看不到第二张图片.我读了一些关于摇摆计时器的教程,但我想我的理解是错误的.通过我创建我的SSCCE的方式,如果你能帮助我,我将不胜感激.谢谢anwyway ...

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Random;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.border.*;

public class ConcentrationGame4 extends JFrame implements ActionListener, ItemListener{

    private static final long serialVersionUID = 1L;
    private int buttoncounter=0;
    private int counter = 0;
    private JFrame …
Run Code Online (Sandbox Code Playgroud)

java user-interface swing timer

2
推荐指数
3
解决办法
2261
查看次数

o显示图像

我想通过单击按钮将图像从Web显示到另一个Jframe中的面板,但每当我单击按钮时,图像就会加载,在此期间当前表单可能会冻结,一旦图像加载,表单就会显示与形象..我怎么能避免我的形式冻结的情况,因为它非常刺激

我的代码::

我现在的课

private void btn_TrackbusActionPerformed(java.awt.event.ActionEvent evt) {                                             
        try {
            sendMessage("Query,map,$,start,211,Arsenal,!");
            System.out.println(receiveMessage());
        } catch (UnknownHostException ex) {
            Logger.getLogger(client_Trackbus.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(client_Trackbus.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (Exception ex) {
            Logger.getLogger(client_Trackbus.class.getName()).log(Level.SEVERE, null, ex);
        }
        client_trackedbus nextform=new client_trackedbus(planform,connection,packet_receive,packet_send);
        this.setVisible(false);
        this.dispose();
        nextform.setVisible(true);
        // TODO add your handling code here:
    }                                            
Run Code Online (Sandbox Code Playgroud)

我的下一个课程显示图像

public class client_trackedbus extends javax.swing.JFrame {
    client_planform planform=null;
    DatagramSocket connection=null;
    DatagramPacket packet_receive=null;
    DatagramPacket packet_send=null;
    JLabel label=null;
    /** Creates new form client_trackedbus */
    public client_trackedbus(client_planform planform,DatagramSocket connection,DatagramPacket packet_receive,DatagramPacket packet_send) …
Run Code Online (Sandbox Code Playgroud)

java swing image

1
推荐指数
1
解决办法
3504
查看次数