边框布局不起作用?
Border Layout not working?
我有一个简单的 JLabel(响应),我想根据来自 JCombobox 的用户交互将其放在 JFrame 的中心。 JLabel 响应应该在 window 的中心,JLabel selectone 应该在组合框旁边;目前,这三个都彼此相邻。首先,我尝试将 borderlayout 直接与 JLabel 一起使用,同时将其添加到 JFrame,但这没有用。然后我尝试在实例化 JLabel 本身时添加它,然后只添加 JLabel。然后我尝试将 JLabel 添加到 JPanel,并将 JPanel 添加到 JFrame,但这也没有用,而且这三个都具有相同的结果,因为这三个彼此相邻。这是我的代码:
package Buttons;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class sentencewindow extends JFrame {
public static void main(String[] args) {
sentence senobj = new sentence();
senobj.setVisible(true);
senobj.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
senobj.setSize(500, 600);
}
}
class sentence extends JFrame {
String[] abc = { "First string", "Second String", "Third String" };
JComboBox combo = new JComboBox(abc);
JLabel selectone = new JLabel("This should be next to the combobox");
JLabel response = new JLabel("This should change based on combobox selection");
sentence() {
super("TITLE");
setLayout(new FlowLayout());
combo.addItemListener(new ItemChangeListener());
JPanel container = new JPanel();
response.setSize(250, 250);
container.add(response, BorderLayout.CENTER);
add(container, BorderLayout.CENTER);
add (selectone);
add(combo);
}
class ItemChangeListener implements ItemListener {
public void itemStateChanged(ItemEvent event) {
if (combo.getSelectedItem().equals(abc[0])) {
response.setText("You pressed the first option.");
}
if (combo.getSelectedItem().equals(abc[1])) {
response.setText("You pressed the second option.");
}
if (combo.getSelectedItem().equals(abc[2])) {
response.setText("You pressed the third option.");
}
}
}
}
非常感谢您抽出宝贵时间阅读本文,我非常感谢您为帮助其他程序员所做的努力!我知道这是一个初学者问题,但我已经坚持了很长时间,并且已经阅读了几乎所有与此相关的问题。请帮忙,谢谢。
您正在寻找的是 JLabel#setHorizontalAlignment
用于在标签本身中居中文本。
添加带边框布局的框架,将带有组合框和标签的面板添加到框架的北部。将标签添加到框架的中心。标签占据全部可用空间 space 并且居中文本选项应使文本在标签内居中。
我有一个简单的 JLabel(响应),我想根据来自 JCombobox 的用户交互将其放在 JFrame 的中心。 JLabel 响应应该在 window 的中心,JLabel selectone 应该在组合框旁边;目前,这三个都彼此相邻。首先,我尝试将 borderlayout 直接与 JLabel 一起使用,同时将其添加到 JFrame,但这没有用。然后我尝试在实例化 JLabel 本身时添加它,然后只添加 JLabel。然后我尝试将 JLabel 添加到 JPanel,并将 JPanel 添加到 JFrame,但这也没有用,而且这三个都具有相同的结果,因为这三个彼此相邻。这是我的代码:
package Buttons;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class sentencewindow extends JFrame {
public static void main(String[] args) {
sentence senobj = new sentence();
senobj.setVisible(true);
senobj.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
senobj.setSize(500, 600);
}
}
class sentence extends JFrame {
String[] abc = { "First string", "Second String", "Third String" };
JComboBox combo = new JComboBox(abc);
JLabel selectone = new JLabel("This should be next to the combobox");
JLabel response = new JLabel("This should change based on combobox selection");
sentence() {
super("TITLE");
setLayout(new FlowLayout());
combo.addItemListener(new ItemChangeListener());
JPanel container = new JPanel();
response.setSize(250, 250);
container.add(response, BorderLayout.CENTER);
add(container, BorderLayout.CENTER);
add (selectone);
add(combo);
}
class ItemChangeListener implements ItemListener {
public void itemStateChanged(ItemEvent event) {
if (combo.getSelectedItem().equals(abc[0])) {
response.setText("You pressed the first option.");
}
if (combo.getSelectedItem().equals(abc[1])) {
response.setText("You pressed the second option.");
}
if (combo.getSelectedItem().equals(abc[2])) {
response.setText("You pressed the third option.");
}
}
}
}
非常感谢您抽出宝贵时间阅读本文,我非常感谢您为帮助其他程序员所做的努力!我知道这是一个初学者问题,但我已经坚持了很长时间,并且已经阅读了几乎所有与此相关的问题。请帮忙,谢谢。
您正在寻找的是 JLabel#setHorizontalAlignment
用于在标签本身中居中文本。
添加带边框布局的框架,将带有组合框和标签的面板添加到框架的北部。将标签添加到框架的中心。标签占据全部可用空间 space 并且居中文本选项应使文本在标签内居中。