好的,我剛剛習(xí)慣OOP,現(xiàn)在正在學(xué)習(xí)揮桿技巧。我正在制作一個(gè)簡(jiǎn)單的應(yīng)用程序,該應(yīng)用程序是2x2網(wǎng)格,包含4張圖像(X,O,正方形和三角形),然后單擊任意一個(gè),將顏色的形狀切換為藍(lán)色。但是,我無法將其切換到新映像,并且我認(rèn)為它與程序的基本功能有關(guān)。介意看看嗎?JFrame類:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.ImageIcon;import java.awt.image.BufferedImage;import javax.imageio.ImageIO;import java.io.File;import java.io.IOException;import javax.swing.JPanel;public class Frame1 { public JFrame frame; Frame1 window = new Frame1(); window.frame.setVisible(true); } public Frame1() { initialize(); } private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 900, 900); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); Squares x = new Squares("images\\black-X.png", "images\\blue-X.png", 0, 0, 450, 450, "x"); Squares o = new Squares("images\\black-O.png", "images\\blue-O.png", 450, 0, 450, 450, "o"); Squares sq = new Squares("images\\black-sq.png", "images\\blue-sq.png", 0, 425, 450, 450, "sq"); Squares tri = new Squares("images\\black-tri.png", "images\\blue-tri.png", 450, 410, 450, 450, "tri"); frame.getContentPane().add(x.getLabel()); frame.getContentPane().add(o.getLabel()); frame.getContentPane().add(sq.getLabel()); frame.getContentPane().add(tri.getLabel()); }}偵聽器類別:import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;public class clickListener implements MouseListener{ Squares ob = new Squares(); public clickListener(Squares newSquare) { ob = newSquare; } public void mouseClicked(MouseEvent e) { ob.changePic(); }}我最初使用的是包含每個(gè)JLabel的JPanels,但是為了簡(jiǎn)化起見,我將它們?nèi)縿h除了。
在Swing中的JLabel中更新圖像圖標(biāo)?使用revalidate()和repaint()
慕標(biāo)琳琳
2021-04-08 13:15:20