Я изучаю графическую библиотеку swing и столкнулся с проблемой - текст не изменяет своё положение относительно jpanel при изменении параметров setVerticalAlignment и setHorizontalAlignment. Я не могу понять, в чём проблема. Скажите пожалуйста, как это исправить. Вот сам код:
import java.awt.*;
import javax.swing.*;
public class Display extends Java_Panel{
public static Java_Panel Java_Panel = new Java_Panel();
public static Java_Frame Java_Frame = new Java_Frame(Java_Panel);
public static void main(String[] args){
Java_Panel.ACI_Start(Label_Container.F_Label);
}
}
public class Java_Frame extends JFrame{
public Java_Frame(Java_Panel Java_Panel){
super("DoW");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
add(Java_Panel);
setVisible(true);
}
}
public class Java_Panel extends JPanel{
public Java_Panel(){
super();
setBackground(Color.BLACK);
add(Label_Container.F_Label);
}
public void ACI_Start(Java_Label Java_Label){
for(int alpha_channel = 0; alpha_channel < 255; alpha_channel++){
Java_Label.setForeground(new Color(255, 255, 255, alpha_channel));
Java_Label.repaint();
try {
Thread.sleep(8);
} catch (InterruptedException InterruptedExpection) {
return;
}
}
}
}
public class Java_Label extends JLabel{
public Java_Label(String java_string, Color Color,
String Font_Name, int Font_Size){
super(java_string);
setForeground(Color);
setVerticalAlignment(JLabel.CENTER);
setHorizontalAlignment(JLabel.CENTER);
setFont(new Font(Font_Name, Font.PLAIN, Font_Size));
}
}
public class Label_Container{
static Java_Label F_Label = new Java_Label("Some_Text", new Color(255, 255, 255, 0),
"Arial", 50);
}
setVerticalAlignment
и setHorizontalAlignment
насколько я помню, управляют не расположением самого JLabel
внутри JPanel
, а расположением текста внутри JLabel
. По умолчанию JLabel
занимает столько места, сколько в нем текста. То есть, чтобы увидеть действие этих методов, нужно принудительно задать размеры JLabel
с помощью метода setPreferredSize(new Dimansion(100, 100));
Например, создав, такой JLabel
внутри функции main()
JLabel topLabel = new JLabel("Top");
topLabel.setVerticalAlignment(JLabel.TOP);
topLabel.setHorizontalAlignment(JLabel.CENTER);
topLabel.setPreferredSize(new Dimansion(100, 100));
topLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1);
topLebel.setForeground(Color.GREEN);
И добавив его на панель, мы должны будем наглядно увидеть такую картину:
А если изменить значение метода setHorizontalAlignment
на RIGHT
, а setVerticalAlignment()
оставить как есть, то увидим следующее:
То есть мы действительно управляем выравниванием текста внутри JLabel
Выравнивание самого JLabel
внутри JPanel
осуществляется с помощью метода JPanel.setLayout();
в который передаются специальные объекты. Они называются менеджеры компоновки.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Скачал с офф сайта и распаковал архив в usr/local/Потом запускаю
Я пишу свой лаунчер МайнкрафтаМне нужны все библиотеки Майнкрафта (dll файлы, LWJGL, OpenAL и другие)