2012-03-20 4 views
0

Я создал программу с JButton (изображением) и обычным образом, теперь, если вы нажмете на обычную кнопку, изображение покажет, теперь у меня есть программа, которую JButton (изображение) спрячется, если нажать на кнопку нормальный, но я не работаю, и я получаю код ошибкиСкрыть JButton (изображение) после нажатия

package View; 

import java.awt.Color; 
import java.awt.Container; 
import java.awt.Cursor; 
import java.awt.Dimension; 
import java.awt.Font; 
import java.awt.Image; 
import java.awt.event.ActionListener; 

import javax.swing.BorderFactory; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 


import Controller.HideController; 
import Controller.HomeController; 
import Controller.SelectieController; 

public class Selectie extends JFrame{ 

private static String Vermeer = "Vermeer"; 

private JLabel label, label1, label2; 
    private JButton keeper, kruis; 
    private JPanel panel; 
    private Container window = getContentPane(); 

public Selectie() 
    { 
     initGUI(); 

    } 

    public void initGUI() 
    { 
     setLayout(null); 
     setTitle("Jari"); 
     setSize(800,600); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


     label = new JLabel();  
     label.setBounds(0, 0, 266, 800); 
     label.setBackground(Color.RED); 
     label.setOpaque(true); 
     window.add(label); 

     label1 = new JLabel(); 
     label1.setBounds(266, 0, 266, 800); 
     label1.setBackground(Color.BLACK); 
     label1.setOpaque(true); 
     window.add(label1); 

     label2 = new JLabel(); 
     label2.setBounds(532, 0, 266, 800); 
     label2.setBackground(Color.RED); 
     label2.setOpaque(true); 
     window.add(label2); 

     JLabel foto = new JLabel(); 
     label1.add(foto); 

     kruis = new JButton(new ImageIcon("../Ajax/src/img/logotje.gif")); 
     kruis.setBorderPainted(false); 
     kruis.setBounds(40, 150, 188, 188); 
     label1.add(kruis); 

     keeper = new JButton("1. "+""+" Kenneth Vermeer"); 
     Cursor cur = keeper.getCursor(); 
     keeper.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 
     keeper.setBounds(20, 50, 186, 12); 
     keeper.setFocusable(false); 
     keeper.setBorderPainted(false); 
     keeper.setContentAreaFilled(false); 
     keeper.setFont(new Font("Arial",Font.PLAIN,17)); 
     keeper.setForeground(Color.WHITE); 
     keeper.setActionCommand(Vermeer); 
     label.add(keeper); 

SelectieController s1 = new SelectieController(keeper); 

     keeper.addActionListener(s1); 

} 

    HideController h1 = new HideController(keeper, kruis); 
     { 
     keeper.addActionListener(h1); 
     } 

} 

класс действий слушателя:

package Controller; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.SwingUtilities; 

public class HideController implements ActionListener { 

    private JButton keeper, logo; 
    private static String Vermeer = "Vermeer"; 

    public HideController(JButton vermeer, JButton kruis) 
    { 
     keeper = vermeer; 
     logo = kruis; 
    //Kenneth Vermeer 
    try 
    { 
     keeper.setVisible(true); 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
    logo.setVisible(false); 
    } 

    public void actionPerformed(ActionEvent event) 
    { 
     String actionCommand = event.getActionCommand(); 
     // Kenneth Vermeer 
     if (Vermeer.equals(actionCommand)) 
     { 
      SwingUtilities.invokeLater(new Runnable() 
      { 
       public void run() 
       {      
        logo.setVisible(false); 
       } 
      }); 
    } 



    }} 

Я надеюсь, что кто-то может помочь мне, спасибо

+4

1) Я получаю код ошибки ..., пожалуйста, опубликуйте его также. 2) Вместо того, чтобы размещать кучу несовместимого кода (например, все метки, нулевой макет ...), разместите [SSCCE] (http://sscce.org/) 3) Не используйте нулевой макет 4) Пожалуйста, соблюдайте соглашения об именах Java – Robin

+1

Почему вы добавляете свой JButton в свой 'JLabel'? Или это то, что вы только что сделали по ошибке? 'label1.add (kruis);'? –

ответ

0

Если вы хотите, чтобы кнопка ушла, вы можете se window.remove(keeper). Если вы не хотите изображения, но все еще хотите, чтобы кнопка была там, вы можете попробовать logo = null, который установит значок на логотипе ни к чему, оставив вас с белым ящиком. Если вы кодируете в Windows, вы можете добавить цвет фона с keeper.setBackgroundColor(Color.Blue) или каким-либо цветом вашего фона, однако внешний вид Mac OS не позволит это по какой-то причине. (вы можете изменить внешний вид и внешний вид, но это довольно сложно). Если у вас более сложный фон, я бы предложил взять образец с правой точки с помощью скриншота (с кнопкой, прокомментированной в коде) и установкой логотипа на это изображение.

Смежные вопросы