现在,我的主要是用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) 我正在使用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)
JPEG是不受支持的特殊格式吗?非常感谢
在代码库中,我们继承了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),这强烈暗示构造函数文档采用的方法.
所以我有两个问题:
如何以及为何使用MediaTracker?
有什么选择?
我尝试创建一个简单的类,可以像这样滑动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记忆游戏),首先我想了解摇摆计时器是如何工作的.首先,我的主要课程实现ActionListener和ItemListener.我使用计时器,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) 我想通过单击按钮将图像从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 ×6
swing ×5
image ×3
awt ×1
components ×1
jpeg ×1
jprogressbar ×1
swingworker ×1
timer ×1