2012-12-18 128 views
3

text color为什么我的文字颜色再次变成白色?

该图片胜过千言万语。
我用JLabel创建了我的GUI 后添加了渐变背景
我使用setPaint(gr)将颜色更改为所需的渐变,然后再次使用setPaint(Color.white)将颜色更改为白色。
然后我使用setupGUI()来创建所有按钮。
然而,他们是在灰色,而不是白色。
如何使IT白领再次

public class ScreenRecorder extends JFrame{ 
    public ScreenRecorder(){ 
     setupGUI(); 
     this.getContentPane().add(b); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.setVisible(true); 
     this.setResizable(false); 
     this.pack(); 
    } 

    /*This method is used to add components into each other, setting layout, etc*/ 
    public void setupGUI(){ 
     play.setPreferredSize(new Dimension(24,24)); 
     Box controls = Box.createHorizontalBox(); 
     controls.add(play); 
     controls.add(Box.createHorizontalStrut(10)); 
     controls.add(timerLabel); 
     controls.add(Box.createHorizontalStrut(200)); 
     controls.add(locationLabel); 
     b.add(controls); 
    } 
    /* Creating the gradient background */ 
    protected class Background extends JPanel{ 
     @Override 
     protected void paintComponent(Graphics g){ 
      Graphics2D g2D = (Graphics2D) g; 
      int w = this.getWidth(); 
      int h = this.getHeight(); 
      Color color1 = Color.black; 
      Color color2 = Color.DARK_GRAY.brighter(); 
      GradientPaint gr = new GradientPaint(0,0,color1,0,w/2,color2); 
      g2D.setPaint(gr); //Color changes to the gradient color 
      g2D.fillRect(0, 0, w, h); 
      g2D.setPaint(Color.white); //Color changes to white for JLabel, but doesn't actually change 
     } 
    } 
    /*Creating the combined Play and Pause button using AbstractAction 
    * The displayed icon must change from that of play to pause on click and vice versa*/ 
    protected class PlayAction extends AbstractAction{ 
     public PlayAction(){ 
      this.putValue(AbstractAction.LARGE_ICON_KEY, playIcon); 
      this.putValue(SHORT_DESCRIPTION, "Click to Record Video"); 
     } 
     @Override 
     public void actionPerformed(ActionEvent e){ 
      if(isPlay == true){ 
       isPlay = false; 
       play.getAction().putValue(LARGE_ICON_KEY, pauseIcon); 
       play.getAction().putValue(SHORT_DESCRIPTION,"Click to Pause Recording"); 
       ScreenRecorder.this.setState(JFrame.ICONIFIED); 
       play.repaint(); 
      }else{ 
       isPlay = true; 
       play.getAction().putValue(LARGE_ICON_KEY, playIcon); 
       play.getAction().putValue(SHORT_DESCRIPTION,"Click to Start Recording"); 
       play.repaint(); 
      } 
     } 
     boolean isPlay = true; //true represents recorder is ready, false means it is currently recording 
     Icon playIcon = (Icon) new ImageIcon("src/images/play.png"); 
     Icon pauseIcon = (Icon) new ImageIcon("src/images/pause.png"); 
    } 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      @Override 
      public void run(){ 
       new ScreenRecorder(); 
      } 
     }); 
    } 
    Background b = new Background(); 
    JButton play = new JButton(new PlayAction()); 
    JLabel timerLabel = new JLabel("00:00",JLabel.CENTER); 
    JLabel locationLabel = new JLabel("Into: ",JLabel.LEFT); 
} 
+0

做你想做的背景或文本颜色为白色? –

+0

文字颜色,先生.... –

回答

3

enter image description here

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

public class JavaGui129 extends JFrame{ 
    public JavaGui129(){ 
     setupGUI(); 
     this.getContentPane().add(b); 
     this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     this.setVisible(true); 
     this.setResizable(false); 
     this.pack(); 
    } 

    /*This method is used to add components into each other, setting layout, etc*/ 
    public void setupGUI(){ 
     //play.setPreferredSize(new Dimension(24,24)); 
     Box controls = Box.createHorizontalBox(); 
     controls.add(play); 
     controls.add(Box.createHorizontalStrut(10)); 
     // Red letter day.. 
     timerLabel.setForeground(Color.RED); 
     controls.add(timerLabel); 
     controls.add(Box.createHorizontalStrut(200)); 
     locationLabel.setForeground(Color.GREEN); 
     controls.add(locationLabel); 
     b.add(controls); 
    } 
    /* Creating the gradient background */ 
    protected class Background extends JPanel{ 
     @Override 
     protected void paintComponent(Graphics g){ 
      // very important! 
      super.paintComponent(g); 
      Graphics2D g2D = (Graphics2D) g; 
      int w = this.getWidth(); 
      int h = this.getHeight(); 
      Color color1 = Color.black; 
      Color color2 = Color.DARK_GRAY.brighter(); 
      GradientPaint gr = new GradientPaint(0,0,color1,0,w/2,color2); 
      g2D.setPaint(gr); //Color changes to the gradient color 
      g2D.fillRect(0, 0, w, h); 
      // irrelevant now 
      //g2D.setPaint(Color.white); //Color changes to white for JLabel, but doesn't actually change 
     } 

     @Override 
     public Dimension getPreferredSize() { 
      return (new Dimension(400,100)); 
     } 
    } 
    /*Creating the combined Play and Pause button using AbstractAction 
    * The displayed icon must change from that of play to pause on click and vice versa*/ 
    protected class PlayAction extends AbstractAction{ 
     public PlayAction(){ 
      this.putValue(AbstractAction.LARGE_ICON_KEY, playIcon); 
      this.putValue(SHORT_DESCRIPTION, "Click to Record Video"); 
     } 
     @Override 
     public void actionPerformed(ActionEvent e){ 
      if(isPlay == true){ 
       isPlay = false; 
       play.getAction().putValue(LARGE_ICON_KEY, pauseIcon); 
       play.getAction().putValue(SHORT_DESCRIPTION,"Click to Pause Recording"); 
       JavaGui129.this.setState(JFrame.ICONIFIED); 
       play.repaint(); 
      }else{ 
       isPlay = true; 
       play.getAction().putValue(LARGE_ICON_KEY, playIcon); 
       play.getAction().putValue(SHORT_DESCRIPTION,"Click to Start Recording"); 
       play.repaint(); 
      } 
     } 
     boolean isPlay = true; //true represents recorder is ready, false means it is currently recording 
     Icon playIcon = (Icon) new ImageIcon("src/images/play.png"); 
     Icon pauseIcon = (Icon) new ImageIcon("src/images/pause.png"); 
    } 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      @Override 
      public void run(){ 
       new JavaGui129(); 
      } 
     }); 
    } 
    Background b = new Background(); 
    JButton play = new JButton(new PlayAction()); 
    JLabel timerLabel = new JLabel("00:00",JLabel.CENTER); 
    JLabel locationLabel = new JLabel("Into: ",JLabel.LEFT); 
} 
+1

最长和详细的描述,因为我在这里看到,(请不要改变),同意,图像和代码说千言万语 – mKorbel

3

尝试

setColor(Color.white); 

以及

Graphics类仅定义的setColor方法来控制要绘制的颜色。由于Java 2D API扩展了Color对象以实现新的Paint接口,因此现有的setColor方法现在是将当前Paint属性设置为Color对象的一种便捷方法。 setColor(c)等价于setPaint(c)。

相关问题