我希望标签酒店管理系统版权2016出现在底部的 MatteBorder
下方并且也居中 . 我试过 copyrightL.setVerticalAlignment(JLabel.BOTTOM);
但它似乎没有用 .
这是我的代码:
public class Admin_hs extends JFrame {
JButton bking_btn= new JButton("Bookings");
JButton fd_btn= new JButton("Financial Data");
JButton ctm_btn= new JButton("Customers");
JButton room_btn= new JButton("Rooms");
JButton adc_btn= new JButton("Additional Costs");
JButton endb_btn= new JButton("Ending Bookings");
//Images
JLabel bking_img= new JLabel();
JLabel fd_img= new JLabel();
JLabel ctm_img= new JLabel();
JLabel room_img= new JLabel();
JLabel adc_img= new JLabel();
JLabel endb_img= new JLabel();
JLabel copyrightL = new JLabel("Hotel Management System \u00a9 2016");
///Panels
JPanel pnl1= new JPanel();
JPanel pnl= new JPanel((new FlowLayout(FlowLayout.LEFT)));
///Constructors
public Admin_hs(){
this.setTitle("Welcome Admin!");
this.setLayout(new GridBagLayout());
///Setting a layout
pnl1.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth= GridBagConstraints.REMAINDER;
gbc.fill= gbc.HORIZONTAL;
gbc.weightx = 1; // ADD THIS LINE so it uses all the existing window size in x direction
pnl1.add(pnl); // ADD THIS LINE
pnl.setLayout(new GridBagLayout());
GridBagConstraints gc= new GridBagConstraints();
///First Column of Grid
gc.insets = new Insets(6, 6, 6, 6);
gc.anchor = GridBagConstraints.WEST;
gc.weightx = 0.5;
gc.weighty = 0.5;
gc.gridx = 0;
gc.gridy = 0;
pnl.add(bking_btn, gc);
gc.gridx = 0;
gc.gridy = 1;
pnl.add(fd_btn, gc);
gc.gridx = 0;
gc.gridy = 2;
pnl.add(ctm_btn, gc);
gc.gridx = 0;
gc.gridy = 3;
pnl.add(room_btn, gc);
gc.gridx = 0;
gc.gridy = 4;
pnl.add(adc_btn, gc);
gc.gridx = 0;
gc.gridy = 5;
pnl.add(endb_btn, gc);
gc.gridx = 0;
gc.gridy = 8;
pnl.add(copyrightL, gc);
/////second column of grid
gc.anchor = GridBagConstraints.WEST;
gc.gridx = 1;
gc.gridy = 0;
bking_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/booking.jpg"));
pnl.add(bking_img, gc);
gc.gridx = 1;
gc.gridy = 1;
fd_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/fd.jpg"));
pnl.add(fd_img, gc);
gc.gridx = 1;
gc.gridy = 2;
ctm_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/guest.jpg"));
pnl.add(ctm_img, gc);
gc.gridx = 1;
gc.gridy = 3;
room_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/room.jpg"));
pnl.add(room_img, gc);
gc.gridx = 1;
gc.gridy = 4;
adc_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/adc.jpg"));
pnl.add(adc_img, gc);
gc.gridx = 1;
gc.gridy = 5;
endb_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/endb.png"));
pnl.add(endb_img, gc);
//copyrightL.setHorizontalAlignment(JLabel.CENTER);
//copyrightL.setVerticalAlignment(JLabel.BOTTOM);
//pnl.add(copyrightL);
pnl1.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK));
this.add(pnl1,gbc);
}
}
Main class
public class Admin_main {
public static void main(String[] args) {
Admin_hs adm= new Admin_hs();
adm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
adm.pack();
adm.setVisible(true);
adm.setSize(780,520);
}
}
以下是目前的情况:
EDIT:
它以这种方式对我有用:
public class Admin_hs extends JFrame {
JButton bking_btn= new JButton("Bookings");
JButton fd_btn= new JButton("Financial Data");
JButton ctm_btn= new JButton("Customers");
JButton room_btn= new JButton("Rooms");
JButton adc_btn= new JButton("Additional Costs");
JButton endb_btn= new JButton("Ending Bookings");
//Images
JLabel bking_img= new JLabel();
JLabel fd_img= new JLabel();
JLabel ctm_img= new JLabel();
JLabel room_img= new JLabel();
JLabel adc_img= new JLabel();
JLabel endb_img= new JLabel();
JLabel copyrightL = new JLabel("Hotel Management System \u00a9 2016");
///Panels
JPanel pnl1= new JPanel();
JPanel pnl2= new JPanel(new GridBagLayout());
///Constructors
public Admin_hs(){
this.setTitle("Welcome Admin!");
this.setLayout(new GridBagLayout());
///Setting a layout
pnl1.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill= gbc.HORIZONTAL;
GridBagConstraints gc= new GridBagConstraints();
///First Column of Grid
gc.insets = new Insets(6, 6, 6, 6);
gc.anchor = GridBagConstraints.WEST;
gc.weightx = 0.5;
gc.weighty = 0.5;
gc.gridx = 0;
gc.gridy = 0;
pnl1.add(bking_btn, gc);
gc.gridx = 0;
gc.gridy = 1;
pnl1.add(fd_btn, gc);
gc.gridx = 0;
gc.gridy = 2;
pnl1.add(ctm_btn, gc);
gc.gridx = 0;
gc.gridy = 3;
pnl1.add(room_btn, gc);
gc.gridx = 0;
gc.gridy = 4;
pnl1.add(adc_btn, gc);
gc.gridx = 0;
gc.gridy = 5;
pnl1.add(endb_btn, gc);
gc.gridx = 0;
gc.gridy = 8;
pnl1.add(copyrightL, gc);
/////second column of grid
gc.anchor = GridBagConstraints.WEST;
gc.gridx = 1;
gc.gridy = 0;
bking_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/booking.jpg"));
pnl1.add(bking_img, gc);
gc.gridx = 1;
gc.gridy = 1;
fd_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/fd.jpg"));
pnl1.add(fd_img, gc);
gc.gridx = 1;
gc.gridy = 2;
ctm_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/guest.jpg"));
pnl1.add(ctm_img, gc);
gc.gridx = 1;
gc.gridy = 3;
room_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/room.jpg"));
pnl1.add(room_img, gc);
gc.gridx = 1;
gc.gridy = 4;
adc_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/adc.jpg"));
pnl1.add(adc_img, gc);
gc.gridx = 1;
gc.gridy = 5;
endb_img.setIcon(new ImageIcon("C:/Users/Diksha/Desktop/OOSD Assignment/icons/60-60/endb.png"));
pnl1.add(endb_img, gc);
pnl1.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLACK));
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 2;
pnl2.add(copyrightL, gbc);
gbc.gridwidth = 1;
gbc.weightx = 1.0;
gbc.gridx = 0;
gbc.gridy = 0;
add(pnl1, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
add(pnl2, gbc);
}
}
以下是它现在的样子:
按钮以某种方式向左移动 . 这对我来说很好,因为我不得不因为某些原因将它们移到左边 . 如何才能将相应的图像显示在左侧?我的意思是,如何让图像更接近左侧的按钮?
1 回答
我相信最简单的方法是使用与此类似的代码
在这段代码中,有两个JPanel,每个都有一个JLabel . 第一个面板底部有一个边框,第二个面板放在下面 . 您可以通过在JFrame上设置布局来实现这一点您可以采用这个想法来处理您的代码 .
使用您的代码,它看起来像这样 .
Admin_main
Admin_hs
这产生了这个