2016-11-18 95 views
0

用三個按鈕編寫一個顯示窗口的程序。每個按鈕都有一個名稱,如「紅色」,「綠色」和「藍色」。在這個窗口中,還有一個標籤。該標籤包含一個圖標。此圖標必須是CompositeIcon,其中開頭爲空。每按一次按鈕,您都會看到一個帶有按鈕顏色的方塊,例如「按藍色按鈕 - >窗口上出現藍色方塊」。 到目前爲止,我有這個。我有他們的顏色名稱的三個按鈕。我每次按下其中一個按鈕都不起作用。我需要做什麼?我怎樣才能讓按鈕變成方形的顏色?

代碼:

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

public class ActionTester{ 

    public static void main(String[] args){ 
      JFrame frame = new JFrame(); 
      final JTextField textField = new JTextField(); 

      JButton RedButton = new JButton("Red"); 

      RedButton.addActionListener(new ActionListener() { 
        @Override 
        public void actionPerformed(ActionEvent e) { 
          SquareIcon red = new SquareIcon(20,Color.RED); 
          CompositeIcon ci = new CompositeIcon(); 
          ci.addIcon(red); 
        } 
      }); 

      JButton GreenButton = new JButton("Green"); 

      GreenButton.addActionListener(new ActionListener() { 
        @Override 
        public void actionPerformed(ActionEvent e) { 
          SquareIcon green = new SquareIcon(20,Color.GREEN); 
          CompositeIcon ci = new CompositeIcon(); 
          ci.addIcon(green); 
        } 
      }); 

      JButton BlueButton = new JButton("Blue"); 

      BlueButton.addActionListener(new ActionListener() { 
        @Override 
        public void actionPerformed(ActionEvent e) { 
          SquareIcon blue = new SquareIcon(20,Color.BLUE); 
          CompositeIcon ci = new CompositeIcon(); 
          ci.addIcon(blue); 
        } 
      }); 

      frame.setLayout(new FlowLayout()); 
      frame.add(RedButton); 
      frame.add(GreenButton); 
      frame.add(BlueButton); 
      frame.add(textField); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.pack(); 
      frame.setVisible(true); 
    } 
} 
+0

嘿,我不知道如果同樣的運動,但對這個一看,最常見的進口打擾:HTTP:/ /stackoverflow.com/questions/19881700/buttons-and-icons-within-a-label-squareicon。這聽起來與你的任務非常相似。 – endkugelfang

回答

2

所有你需要做的是創建您在更改ActionListener像一個方形物體:

final JPanel sqr = new JPanel(); 

JButton RedButton = new JButton("Red"); 

RedButton.addActionListener(new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
    sqr.setBackground(Color.RED); 
    } 
}); 

不要忘記添加sqr到幀

在另一方面請避免使用進口喜歡

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

在我的項目它來到了

import java.awt.Color; 
import java.awt.FlowLayout; 
import java.awt.Frame; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

有些IDE可以整理你進口全自動所以你不需要再

+0

謝謝你回答我的問題。如果我想每次按紅色按鈕的時候想要做一個以上的紅色正方形,那麼更多的紅色正方形會出現在另一個旁邊。我怎麼做? – MrDavidNhan10

+0

沒關係我覺得我明白了。不管怎樣,謝謝你。 – MrDavidNhan10

+2

某些外觀不符合按鈕的背景顏色。要獲得更可靠的方法,請使用[This answer](http://stackoverflow.com/a/13943044/418556)中所見的'ColoredIcon'。這將適用於PLAF和系統。 (請注意,答案會將圖標添加到標籤,但按鈕也會接受圖標。) –

1

按鈕本身的工作,但你永遠不添加compositeicon到你的框架。因此沒有任何顯示

+0

謝謝你指出。 – MrDavidNhan10