亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在半透明的框架/面板/組件上重新油漆。

在半透明的框架/面板/組件上重新油漆。

守候你守候我 2019-08-03 03:03:19
在半透明的框架/面板/組件上重新油漆。我試圖在OSX上用Java創建一個半透明窗口,并添加一個JLabel敬它。這,這個JLabel每一秒都要改變它的文字.。然而,組件沒有很好地重新繪制。我怎樣才能解決這個問題?我找到了這些 文章但我想不出怎么解決這個問題。如果可能,請粘貼修復源代碼,這是我的:import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JLabel;import java.awt.Color;import java.awt.Font; import java.util.Timer;import java.util.TimerTask;public class Translucent {     public static void main( String [] args ) {         JFrame frame = new JFrame();         frame.setBackground( new Color( 0.0f,0.0f,0.0f,0.3f));         final JLabel label =  new JLabel("Hola");         label.setFont( new Font( label.getFont().getFamily(), Font.PLAIN, 46 ) );         label.setForeground( Color.white );         frame.add( label );         frame.pack();         frame.setLocationRelativeTo( null );         frame.setVisible( true );         Timer timer = new Timer();         timer.schedule( new TimerTask(){             int i = 0;             public void run() {                 label.setText("Hola "+ i++ );             }         }, 0, 1000 );     }   }
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

問題還可能與設置JLabel來自不是事件分發線程的文本。

解決這個問題有兩種方法。如果不測試您的問題,我將使用javax.swing.Timer類,而不是java.util.Timer班級,等級。javax.swing.Timer將確保事件在調度線程上觸發。

所以(未經測試的代碼):

final ActionListener labelUpdater = new ActionListener() {
  private int i;
  @Override
  public final void actionPerformed(final ActionEvent event) {
    label.setText("Hola " + this.i++);
  }};final javax.swing.Timer timer = new javax.swing.Timer(1000L, labelUpdater);

解決這個問題的另一個方法是繼續使用java.util.Timer但要確保你用EventQueue.invokeLater(Runnable)以確保在EDT上對標簽進行更新。



查看完整回答
反對 回復 2019-08-05
  • 3 回答
  • 0 關注
  • 425 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號