2013-06-12 2 views
0

Хорошо, это, наверное, глупый вопрос, но я новичок в GUI и Java в целом. В моем графическом интерфейсе я создал то, что называется моим фреймом, потому что нет, где я вижу JFrame. Или мне нужно создать JFrame и поместить все, что у меня есть. Мне нужен JFrame, чтобы делать такие вещи, как сведение к минимуму экрана, изменение значка и т. Д. Спасибо за любую помощь!Добавление фрейма в GUI Java

private ImageIcon bgi; 
private JLabel bgl; 


private JButton startButton; 
private JButton helpButton; 
private JButton backButton; 
private final Action action = new SwingAction(); 


public static void main(String[] args) throws MalformedURLException, IOException { 
    TwitterUnfollower gui = new TwitterUnfollower(); 
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when click x close program 
    gui.setSize(902, 305); 

    gui.setVisible(true); 
    gui.setTitle("Solid Cloud Inc - Twitter Unfolower"); 
} 

public TwitterUnfollower() throws MalformedURLException, IOException{ 

    bgi = new ImageIcon(getClass().getResource("tu.png")); 
    getContentPane().setLayout(null); 
    BufferedImage img = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/start_zpsf3781681.png")); 
    //ImageIcon start = new ImageIcon(getClass().getResource("start.png")); 
    startButton = new JButton(""); 
    startButton.setIcon(new ImageIcon(img)); 
    startButton.setBounds(22, 186, 114, 50); 


    getContentPane().add(startButton); 

    BufferedImage img2 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/help_zpsc4fad867.png")); 
    helpButton = new JButton(""); 
    helpButton.setIcon(new ImageIcon(img2)); 
    helpButton.setBounds(192, 186, 114, 50); 

    getContentPane().add(helpButton); 

    BufferedImage img3 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/back_zps9d62b65b.png")); 
    backButton = new JButton(""); 
    backButton.setIcon(new ImageIcon(img3)); 
    backButton.setBounds(105, 205, 82, 44); 
    backButton.setBorder(BorderFactory.createEmptyBorder()); 
    backButton.setContentAreaFilled(false); 
    backButton.setVisible(false); 

    getContentPane().add(backButton); 

    bgl = new JLabel (bgi); 
    bgl.setBounds(0, 0, 886, 272); 
    getContentPane().add(bgl); 

    Events e = new Events(); 
    startButton.addActionListener(e); 
    helpButton.addActionListener(e); 
    backButton.addActionListener(e); 
} 

} 

У меня есть прослушиватель действий. Я удалил его из кода, чтобы сделать его короче. И я знаю, что я должен избегать пустых макетов, но я использую WindowBuilder, и это, вероятно, изменится. Еще раз спасибо!

+0

TwitterUnfollower кажется вашей рамкой – nachokk

+0

'TwitterUnfollower gui = new TwitterUnfollower(); gui.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 'Мое первое предположение заключается в том, что' TwitterUnfollower' фактически ** расширяет JFrame' **. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

Этот код не компилируется. TwitterUnfollower должен, вероятно, быть классом, который расширяет JFrame. Кроме того, вы должны прочитать LayoutManagers и избавиться от вызовов setBounds() (он не будет летать). – haraldK

ответ

1

ли вы имеете в виду что-то вроде этого:

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.GridLayout; 
import java.awt.image.BufferedImage; 
import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

import javax.imageio.ImageIO; 
import javax.swing.BorderFactory; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public class TwitterUnfollower extends JFrame { 
    private ImageIcon bgi; 
    private JLabel bgl; 

    private JButton startButton; 
    private JButton helpButton; 
    private JButton backButton; 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        TwitterUnfollower gui = new TwitterUnfollower(); 
        gui.setTitle("Solid Cloud Inc - Twitter Unfolower"); 
        gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when click x close program 
        gui.pack(); 
        gui.setVisible(true); 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public TwitterUnfollower() throws MalformedURLException, IOException { 

     bgi = new ImageIcon(ImageIO.read(new URL(
       "http://content.mcfc.co.uk//~/media/Images/Home/News/Club%20news/2012/twitter%20background%20new.ashx"))); 
     bgl = new JLabel(bgi); 
     bgl.setLayout(new BorderLayout()); 
     getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0)); 
     getContentPane().add(bgl); 

     BufferedImage img = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/start_zpsf3781681.png")); 
     // ImageIcon start = new ImageIcon(getClass().getResource("start.png")); 
     startButton = getButton(img); 

     BufferedImage img2 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/help_zpsc4fad867.png")); 
     helpButton = getButton(img2); 

     BufferedImage img3 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/back_zps9d62b65b.png")); 
     backButton = getButton(img3); 

     JPanel alignLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); 
     alignLeftPanel.setOpaque(false); 
     JPanel buttonPanel = new JPanel(new GridLayout(1, 0)); 
     buttonPanel.setOpaque(false); 
     buttonPanel.add(startButton); 
     buttonPanel.add(helpButton); 
     buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); 
     alignLeftPanel.add(buttonPanel); 
     bgl.add(alignLeftPanel, BorderLayout.SOUTH); 
    } 

    private JButton getButton(BufferedImage img) { 
     JButton button = new JButton(new ImageIcon(img)); 
     button.setContentAreaFilled(false); 
     button.setBorderPainted(false); 
     button.setFocusPainted(false); 
     return button; 
    } 

} 

Важно: скорее использовать LayoutManager, чем при использовании null макет, который будет только получить вас в беде.

Предостережение: photobucket возвращает статус 503, поэтому я больше не могу тестировать этот код.

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