- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在我的 Swing 应用程序中开发类似 Toast (Android) 的功能。作为一个独立的,它工作完美。但是当集成到应用程序中时,它会带来问题。
类文件是:
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.geom.RoundRectangle2D;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;
import net.mindcrew.utils.LayoutHelper.Packer;
public class Toast extends JDialog {
String text;
public Toast(String text) {
this.text = text;
initComponents();
}
private void initComponents(){
setLayout(new GridBagLayout());
addComponentListener(new ComponentAdapter() {
// Give the window an rounded rect shape. LOOKS GOOD
// If the window is resized, the shape is recalculated here.
@Override
public void componentResized(ComponentEvent e) {
setShape(new RoundRectangle2D.Double(0,0,getWidth(),getHeight(),50,50));
}
});
setUndecorated(true);
setSize(300,100);
setLocationRelativeTo(null);
getContentPane().setBackground(Color.BLACK);
// Determine what the GraphicsDevice can support.
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
final boolean isTranslucencySupported =
gd.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.TRANSLUCENT);
//If shaped windows aren't supported, exit.
if (!gd.isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency.PERPIXEL_TRANSPARENT)) {
System.err.println("Shaped windows are not supported");
}
//If translucent windows aren't supported,
//create an opaque window.
if (!isTranslucencySupported) {
System.out.println(
"Translucency is not supported, creating an opaque window");
}
// Set the window to 70% translucency, if supported.
if (isTranslucencySupported) {
setOpacity(0.9f);
}
ImageIcon loading = new ImageIcon(Toast.class.getResource("/net/mindcrew/utils/userinterface/resources/loading-photo.gif"));
JLabel label = new JLabel(text);
label.setForeground(Color.WHITE);
label.setIcon(loading);
Packer packer = new Packer(this);
packer.pack(label).fillboth().west().inset(0, 50, 0, 20);
}
public static Toast showDailog(String textToDisplay){
final Toast toast = new Toast(textToDisplay);
// Display the window.
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
toast.setVisible(true);
}
});
thread.start();
return toast;
}
@Override
public void hide(){
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
setVisible(false);
dispose();
}
});
}
public static void main(String... args){
Toast toast = Toast.showDailog("Display");
try{
Thread.sleep(5000);
}
catch (Exception e){}
toast.hide();
}
}
可能会有一些实现上的错误,但这是基本的。
这很好用。但是,当我尝试以资源密集型操作的方式进行设置时,它会跳闸。由于 GIF 动画没有显示,我认为这意味着它有点停滞了。
用途是:
Toast toast = Toast.showDailog("Generating PDF");
//resource intensive operation. Takes about 3-5seconds to execute
toast.hide();
更让我痛苦的是,即使在处理完“Toast”之后,应用程序也变得非常慢。我很确定速度变慢不是因为有问题的操作,因为如果我取消“ toast ”,它会完美地工作。
有人可以指出这里有什么问题吗???
我经历了this question .但是那里的东西比我要找的要复杂得多。我正在寻找的是一个简单的对话框。不是一个完整的框架,需要容纳多个组件。
最佳答案
试试这段代码:
public class Test extends JFrame {
private JPanel contentPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JButton btnTestToast = new JButton("Test Toast");
btnTestToast.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ToastMessage toastMessage = new ToastMessage("Sample text to toast ",3000);
toastMessage.setVisible(true);
}
});
contentPane.add(btnTestToast, BorderLayout.SOUTH);
}
}
public class ToastMessage extends JDialog {
int miliseconds;
public ToastMessage(String toastString, int time) {
this.miliseconds = time;
setUndecorated(true);
getContentPane().setLayout(new BorderLayout(0, 0));
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
panel.setBorder(new LineBorder(Color.LIGHT_GRAY, 2));
getContentPane().add(panel, BorderLayout.CENTER);
JLabel toastLabel = new JLabel("");
toastLabel.setText(toastString);
toastLabel.setFont(new Font("Dialog", Font.BOLD, 12));
toastLabel.setForeground(Color.WHITE);
setBounds(100, 100, toastLabel.getPreferredSize().width+20, 31);
setAlwaysOnTop(true);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int y = dim.height/2-getSize().height/2;
int half = y/2;
setLocation(dim.width/2-getSize().width/2, y+half);
panel.add(toastLabel);
setVisible(false);
new Thread(){
public void run() {
try {
Thread.sleep(miliseconds);
dispose();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
}
关于java - Android 喜欢 Toast in Swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161149/
假设您有下表,名为 Likes: A|B --- a|b a|f a|e a|i b|a b|i c|d e|p 在此表中,A 中的值表示“喜欢”B 中的人。因此,a 喜欢 b,a 喜欢 f,a 喜欢
请访问此处观看直播https://ibnul.neocities.org/_temporary/au2pr4/like-dis-icon-active-effect.html 这里我有多个评论部分,每
我想要一个喜欢/不喜欢的超链接来在我的页面上显示不同的内容:当点击“喜欢”时,显示“好”;单击“不喜欢”时,显示“不好”。我的代码是这样的: function Homepage(){ t
我们已经建立了一个 Facebook Page Tab application用Like Gate .我们之前已经做过无数次了,在这方面,这个应用程序没有任何异常。 在我们的 ASP.Net 4.0
我正在尝试在我的页面上实现一个喜欢/不喜欢按钮。我设法让按钮工作(点击时它会变成喜欢,反之亦然),它还会在数据库表上创建或删除类似的东西。现在的问题是喜欢的计数器。它仅在我第一次单击按钮时有效,即如果
我想在我的 Android 应用程序中集成一个赞按钮。我用了代码 likeWebView = (WebView) findViewById( R.id.webView1 ); likeWebView
我有一个漫画网站,我希望用户可以为每部漫画和每件艺术品一次投票。 我的代码似乎有两个问题: 1) 我只希望一个用户每张图片投票一次...所以我想捕获他们的信息并将其存储在数据库中。我有一个 ON DU
我正在开发 web 应用程序,我必须像 facebook 那样实现“喜欢”系统。应用程序将包含客户可以“喜欢”的几类产品。所以我开始创建数据库,但遇到了一个障碍。据我了解,有两种方法可以做到这一点:
我需要一个 mysql 查询方面的帮助。我无法找到特定查询的解决方案。我什至不确定,如果 LIKE 运算符是我正在寻找的。 我想要实现的是,找到所有包含 url 的行,如果该 url 不是 foo.c
如何为 Like 编写动态 LINQ 方法条款。 供引用,有Dynamic LINQ OrderBy on IEnumerable / IQueryable .我正在寻找一个类似的动态 Like条款。
This question already has answers here: Cumulative number of unique values in a column up to current
我需要任何用户能够每 24 小时点赞一次 我为此写了一个函数 const LIKE_HEART = 'like_heart'; const LIKE_FINGER = 'like_finger'; p
让我在这里解释一下整个事情,以便您可以清楚地了解情况: 我在 Facebook 上有一个页面,这些见解(页面上的和来自图形 API 的)为我提供了很多有值(value)的信息,但我需要更深入。我正在考
给定这个脚本: DECLARE @token NVARCHAR(max) SET @token = 'mytexttosearchfor' SELECT * FROM myTable WHERE my
我怎样才能做一个Like-query,要搜索多个值? $searchWords = explode(' ', Input::get('search')); 然后我得到一组用于搜索的单词。 我怎样才能通
我正在尝试在页面上制作一个“赞”按钮,但似乎无法使其正常工作。基本上有三个函数使用ajax将数据发送到更新数据库的php页面。我已经检查了数据库并且所有三个更新都正确。如果用户最初不喜欢并单击,它会正
我有两张 table 在“用户”表中,每个用户都有一些技能。它们位于单个列上并连接在一起。在表“技能”上,每个技能都有一个关联的标签。 碰巧有些用户的技能不再在表“技能”中引用。 我想做的选择应该列出
所以我正在尝试设计一个数据库来跟踪观看次数、喜欢次数和下载次数。现在要跟踪的条目数量预计为 1m 或更多,所以通常我会每天跟踪每个条目,但对于 1m,我担心性能甚至可能是硬盘大小。 客户希望能够显示上
我像在 Firebase 事件数据库中一样实现了该系统。点赞计数器位于 EventModel -> likesInfo -> likesNumber 处。问题在于数据发散,例如,如果两个用户快速(0.
假设两个用户正在使用一个应用程序,并已授予该应用程序适当的权限来检索他们的点赞。是否可以使用 FQL 或图形 api 来查找他们的共同点?类似于如何使用图形 API 在两个用户之间找到共同的 frie
我是一名优秀的程序员,十分优秀!