2016-12-05 2 views
0

Независимо от того, как я устанавливаю свои границы для моего JLabel, он всегда находится в том же месте. Я использую окно Window Builder Swing Designer. Вот мой код:Невозможно выровнять компонент JLabel в JPanel слева от JPanel, он находится в

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.LineBorder; 
import java.awt.Color; 
import javax.swing.JLabel; 
import java.awt.Font; 
import javax.swing.SwingConstants; 

public class Restaurants { 

private JFrame frame; 

/** 
* Launch the application. 
*/ 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Restaurants window = new Restaurants(); 
       window.frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the application. 
*/ 
    public Restaurants() { 
    initialize(); 
} 

/** 
* Initialize the contents of the frame. 
*/ 
private void initialize() { 
    frame = new JFrame(); 
    frame.setBounds(0, 0, 1368, 689); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.getContentPane().setLayout(null); 

    JPanel panel = new JPanel(); 
    panel.setBorder(new LineBorder(new Color(0, 0, 0), 12)); 
    panel.setBounds(10, 143, 572, 258); 
    frame.getContentPane().add(panel); 

    JLabel label= new JLabel("Chicken Burger Meal"); 
    label.setFont(new Font("Tahoma", Font.PLAIN, 18)); 
    label.setBounds(21,70,173,29); 
    panel.add(label); 

    JLabel lblChickenBurger = new JLabel("Chicken Burger"); 
    lblChickenBurger.setFont(new Font("Tahoma", Font.PLAIN, 18)); 
    lblChickenBurger.setBounds(21,22,173,29); 
    panel.add(lblChickenBurger); 

    JPanel panel_1 = new JPanel(); 
    panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 12)); 
    panel_1.setBounds(592, 143, 401, 259); 
    frame.getContentPane().add(panel_1); 

    JPanel panel_2=new JPanel(); 
    panel_2.setBorder(new LineBorder(new Color(0,0,0), 12)); 
    panel_2.setBounds(10,412,572,228); 
    frame.getContentPane().add(panel_2); 

    JPanel panel_3=new JPanel(); 
    panel_3.setBorder(new LineBorder(new Color(0,0,0),12)); 
    panel_3.setBounds(592,411,401,228); 
    frame.getContentPane().add(panel_3); 

    JPanel panel_4 = new JPanel(); 
    panel_4.setBorder(new LineBorder(new Color(0, 0, 0), 12)); 
    panel_4.setBounds(1003, 174, 401, 465); 
    frame.getContentPane().add(panel_4); 

    JLabel lblNewLabel = new JLabel("Loan Management System"); 
    lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 60)); 
    lblNewLabel.setBounds(160, 49, 849, 96); 
    frame.getContentPane().add(lblNewLabel); 
} 

}

Что вы думаете так? Я рассмотрел все возможные стратегии, о которых я могу думать, но ни одна из стратегий, похоже, не дает какого-либо жизнеспособного решения.

ответ

0

Изменение параметров, переданных в метод setBounds(), похоже, работает для меня с вашим кодом. В частности, какой JPanel вы пытаетесь переместить?

Я хотел бы попробовать, глядя на менеджера макета GridLayout за то, что вы пытаетесь сделать: https://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html

0

Самый простой и наиболее подходящим способом, чтобы не использовать абсолютное позиционирование - использовать соответствующий менеджер (ы) макета. Попытка использовать абсолютное позиционирование чревата проблемой, особенно если вы переносите на другую платформу с другим размером экрана или размером пикселя или шрифтом по умолчанию или с любым из множества других предметов. И изменение шрифтов или строк ярлыков, или добавление/удаление компонентов, будет кошмаром.

JPanel itsepf не обращает внимания на размер компонента (x, y) - для этого используется диспетчер компоновки.

Если вы настаиваете на том, чтобы сделать это с нулевым макетом, вам придется создать свой собственный подкласс JPanel с помощью диспетчера макетов и в методе paintComponent() поместить сами компоненты (или, альтернативно, написать собственный LayoutManager для сделай это).

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