小弟初接触Swing,遇到一个奇怪的问题,求大牛解答,下面是写的一点代码: //下面是我自己定义的一个Panel 我运行程序,可以看到界面和我自己设置的背景画布,但是add的panel看不到,只有当把鼠标移动到button的位置,Button才会显示出来。 我怀疑是我布局管理器的原因,但是调试半天没发现问题,请各位指教。 |
|
你贴的代码没什么问题,问题在你没贴的代码中。
|
|
下面贴上全部的代码: package ui.mainUi; import java.awt.BorderLayout; import ui.mainUi.mainPanel; import com.sun.awt.AWTUtilities; public class mainFrame extends JFrame { //播放器主体结构 //加载播放器的背景 } package ui.mainUi; import javax.swing.JButton; import javax.swing.*; public class mainPanel extends JPanel private JMenuBar mainMenu; mainPanel() } 麻烦帮忙看下 |
|
你那个setBounds()里的参数设置不合理,导致button互相挡住了
而且, 这个不知道是怎么编译过去的 |
|
20分 |
你自己做的component挡住你的按钮了。将背景图片相关的代码从mainFrame中删掉,改在MainPanel中做就行了,如下: class MainPanel extends JPanel { private JMenuBar mainMenu; private MainPanel lyricsPanel; private JButton pauseButton; private JButton playerButton; private JButton nextone; private JButton previousone; private static final Image image = Toolkit.getDefaultToolkit().getImage( "images/Cat.gif"); // 加载播放器的背景 protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics gBackground = g.create(); gBackground.drawImage(image, 0, 0, getWidth(), getHeight(), this); gBackground.dispose(); } MainPanel() { nextone = new JButton( "E:\yangwei""s home\java\Application\Application\player\img\fastForward.png"); nextone.setBounds(new Rectangle(165, 55, 40, 30)); playerButton = new JButton( "E:\yangwei""s home\java\Application\Application\player\img\play.png"); playerButton.setBounds(210, 55, 40, 30); previousone = new JButton( "E:\yangwei""s home\java\Application\Application\player\img\rewind.png"); previousone.setBounds(255, 55, 40, 30); setLayout(null); add(previousone, null); add(playerButton, null); add(nextone, null); // JSlider VolumeControl = new JSlider(); // VolumeControl.setBounds(275, 55, 40, 30); // VolumeControl.setPaintLabels(true); // add(VolumeControl); setVisible(true); } } |
首先谢谢,用了你的方法之后问题确实是解决了, |
|
是的,就是MainFrame中的那个canvas,你用的是JComponent匿名子类方式定义的。这个Component自己绘自己,绘的时候就把几个按钮盖住了。 |
|
这样是可以了,但是出现了一个新的问题 我在button上加的那些图片不能显示了。 |
|
20分 |
JButton上加图片,用setIcon方法。 |
遇到了相同的问题
|
|
我调了好几个小时,最后一下子来了灵感,解决的方法就是把所有的按钮添加完了只后在来个刷新函数就ok了。 SwingUtilities.updateComponentTreeUI(this);
|