2013-12-18 185 views
0

嗨,再次我已经把我的原始代码只是为了让你看看我在谈论的GridBagConstrainsts这就是我试图把每个图像粘贴到面板的南面紧挨着对方GridBagLayout爪哇

package prototype; 

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

import javax.swing.WindowConstants; 

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.awt.Image; 
import javax.imageio.ImageIO; 

import javax.swing.ImageIcon; 
import javax.swing.JCheckBox; 
//Declare the class which extends JFrame and 
//implements ActionListener to enable bottons to respond whenever clicked or selected 
public class Master extends JFrame implements ActionListener { 

    //create the bottons visible by the user 
    JButton check = new JButton(""); 
    JButton playList = new JButton(""); 
    JButton update = new JButton(""); 
    JButton quit = new JButton(""); 
    JCheckBox tick = new JCheckBox("Tick"); 

    JPanel top = new JPanel(); 

    public static void main(String[] args) { 

     //declare object of the class 
     Master jf = new Master(); 
    } 

    public Master() { 
     setLayout(new BorderLayout()); 
     setSize(1050, 400); 
     setTitle("Master"); 

     // close application only by clicking the quit button 
     setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
     //show the frame in the middle of the screen when run 
     setLocationRelativeTo(null); 

     top.add(new JLabel("Select an option by clicking one of the buttons below")); 
     add("North", top); // add the text above to the upper part of the frame (North) 
     JPanel bottom = new JPanel(); 
     bottom.setLayout(new GridBagLayout()); 
     bottom.add(check); 
     check.addActionListener(this); 
     bottom.add(playList); 
     playList.addActionListener(this); 
     bottom.add(update); 
     update.addActionListener(this); 
     bottom.add(quit); 
     quit.addActionListener(this); 
     add("South", bottom); 

     //make the frame non resizable but visible 
     setResizable(true); 
     setVisible(true); 

     try{ 
     Image img = ImageIO.read(getClass().getResource("gui/Exit.png")); 
     Image resize = img.getScaledInstance(290, 180, 18); 
     quit.setIcon(new ImageIcon(resize)); 
     img = (bottom, new JLabel("NAME"), 0,0,1,1, GridBagConstraints.SOUTH); 


     }catch(Exception e){ 
     } 
     try{ 
     Image img = ImageIO.read(getClass().getResource("gui/Untitled.png")); 
     Image resize = img.getScaledInstance(290, 180, 18); 
     check.setIcon(new ImageIcon(resize)); 

     }catch(Exception e){ 
     } 
     try{ 
     Image img = ImageIO.read(getClass().getResource("gui/CPL.png")); 
     Image resize = img.getScaledInstance(290, 180, 18); 
     playList.setIcon(new ImageIcon(resize)); 

     }catch(Exception e){ 
     } 
     try{ 
     Image img = ImageIO.read(getClass().getResource("gui/UpdateLib.png")); 
     Image resize = img.getScaledInstance(290, 180, 18); 
     update.setIcon(new ImageIcon(resize)); 

     }catch(Exception e){ 
     } 

    } 

    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == check) { 
      new CheckLibrary(); 
     } else if (e.getSource() == update) { 
      new UpdateLibrary(); 
     } else if (e.getSource() == quit) { 
      System.exit(0); 
     } else if (e.getSource() == playList) { 
      new CreatePlaylist(); 

    } 
} 
} 
+2

??? img = GridBagConstrainsts.SOUTH – Dodd10x

回答

0

对于需要使用的GridBagConstraintsanchorweighty性质的目的。

在下面的例子中我设置JTextField南:

import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 

import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class Example extends JFrame { 

    public Example(){ 
     JTextField f = new JTextField(20); 

     setLayout(new GridBagLayout()); 
     GridBagConstraints c = new GridBagConstraints(); 
     c.anchor = GridBagConstraints.SOUTHEAST; 
     c.weighty = 1; 
     add(f,c); 
    } 

    public static void main(String...strings){ 
     Example e = new Example(); 
     e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     e.pack(); 
     e.setLocationRelativeTo(null); 
     e.setVisible(true); 
    } 

} 

如果需要通过组件,以填补所有的横向空间加上下一:

c.weightx = 1; 
c.fill = GridBagConstraints.HORIZONTAL; 

enter image description here

对于Image可以在我的示例中使用JLabel而不是JTextField

JLabel l = new JLabel(new ImageIcon(getClass().getResource(PATH_TO_IMAGE))); 
0

您不能直接将图像添加到JPanel。你可以做的是将图像设置为JPanel或JLabel的图像图标,并将其添加到你想要做的任何事情中。