标签: boxlayout

如何更改BoxLayout中元素的大小?

我有这门课:

package com.erikbalen.game.rpg;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class Gui extends JFrame implements ActionListener {

/**
 * 
 */
private static final long serialVersionUID = -384241835772507459L;
JLabel playerInfo;
JTextField textField;
private final static String newline = "\n";
JTextArea feed;
JScrollPane scrollPane;
Player player;

public Gui() {
    super("Erik's RPG");

    //setLayout(new FlowLayout());

    Container contentPane = this.getContentPane();
    contentPane.setLayout(new BoxLayout(contentPane,BoxLayout.PAGE_AXIS));

    textField = new JTextField(30);

    textField.addActionListener(this);


    feed = new JTextArea(15, 30);
    feed.setEditable(false);
    scrollPane = new JScrollPane(feed);
}
Run Code Online (Sandbox Code Playgroud)

当你运行它时,它会使textField真的很高,如果我扩展它,即使我只希望它是一定的高度.我怎么能够

java user-interface swing boxlayout

4
推荐指数
1
解决办法
2439
查看次数

保持BoxLayout不会扩大儿童

我想在JPanel中垂直堆叠一些JComponents,因此它们堆叠在顶部,任何额外的空间都在底部.我正在使用BoxLayout.每个组件都包含一个JTextArea,它应该允许文本在必要时包装.所以,基本上,我希望每个组件的高度是显示(可能包装的)文本所需的最小值.

这是我正在做的事情的包含代码示例:

import javax.swing.*;
import java.awt.*;
public class TextAreaTester {
    public static void main(String[] args){
        new TextAreaTester();
    }
    public TextAreaTester(){
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel,BoxLayout.PAGE_AXIS));
        panel.setPreferredSize(new Dimension(100,400));
        for(int i = 0; i<3; i++){
            JPanel item = new JPanel(new BorderLayout());
            JTextArea textarea = new JTextArea("this is a line of text I want to wrap if necessary");
            textarea.setWrapStyleWord(true);
            textarea.setLineWrap(true);
            textarea.setMaximumSize( textarea.getPreferredSize() );
            item.add(textarea,BorderLayout.NORTH);
            panel.add(item);
        }
        panel.add(Box.createGlue());
        frame.add(panel);
        frame.setVisible(true);
        frame.pack();  
    }
}
Run Code Online (Sandbox Code Playgroud)

孩子JPanels正在扩大以填补垂直空间.我尝试使用胶水,因为我认为这是什么胶水,但它似乎什么都不做.有帮助吗?

注意:我发现问题看起来几乎相同,但没有我可以应用的答案.

java swing jpanel boxlayout preferredsize

3
推荐指数
1
解决办法
1405
查看次数

如何使BoxLayout中的垂直间隙变小?

我有以下表单,它使用行垂直BoxLayout和FlowLayout JPanels:

在此输入图像描述

如何使每行之间的巨大差距变小?这是我的代码:

java user-interface swing layout-manager boxlayout

3
推荐指数
2
解决办法
8892
查看次数

java中的boxlayout的x_axis和line_axis有什么区别?

x_axis和line_axis都是从左到右排列组件.那么它们之间的区别是什么?

这个问题来自Java Swing boxlayout布局管理器.

java swing jpanel boxlayout

3
推荐指数
1
解决办法
3161
查看次数

如何解决BoxLayout在为JPanel设置时无法共享错误?

我正在尝试在另一个JPanel中设置Jlay的Boxlayout.但我无法弄清楚如何解决这个错误

    Exception in thread "main" java.awt.AWTError: BoxLayout can't be shared
    at javax.swing.BoxLayout.checkContainer(BoxLayout.java:464)
at javax.swing.BoxLayout.invalidateLayout(BoxLayout.java:248)
at javax.swing.BoxLayout.addLayoutComponent(BoxLayout.java:281)
at java.awt.Container.addImpl(Container.java:1120)
at java.awt.Container.add(Container.java:410)
at chatmsg1.ProfilePanel.<init>(ProfilePanel.java:63)
at chatmsg1.ProfilePanel.main(ProfilePanel.java:108)
    Java Result: 1
Run Code Online (Sandbox Code Playgroud)

这是守则!任何帮助将不胜感激 !!

import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.management.ImmutableDescriptor;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

 class ProfilePanel extends JPanel{
 JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8,jl9,jl10;
 ImagePanel ip= new ImagePanel();
 JPanel jp1= new JPanel(new BorderLayout());
 JPanel labelpanel;
 static int textwidth=100; 
 static String uname, uage, usex, udept,   uheight="jjhkjhiuhiuhiuhiuhihihuihiuhiuhuhiuhiuhihihiuhhihhuhih",ubatch, ucontact, uemail;
public ProfilePanel() {
    this.labelpanel …
Run Code Online (Sandbox Code Playgroud)

java swing exception awt boxlayout

3
推荐指数
1
解决办法
7212
查看次数

我如何使用 BoxLayout 来做到这一点?

我已经完美地设置了菜单(中心框),但我不知道如何放置标签。目前发生的情况是标签位于菜单选项下方,并且菜单选项被推到右侧。

这是我想要发生的事情: 在此输入图像描述

这是正在发生的事情: 在此输入图像描述

目前我的盒子集中在:

this.setAlignmentX(Component.CENTER_ALIGNMENT);
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下方法对我的标签执行相同的操作:

this.setAlignmentX(Component.BOTTOM_ALIGNMENT);
this.setAlignmentY(Component.LEFT_ALIGNMENT);
Run Code Online (Sandbox Code Playgroud)

这什么也没做。

抱歉,这张图太糟糕了,我用 MS Paint 花了大约 20 秒就把它画出来了。

这是标签的重要部分

public Label(String text)
{

    this.setHorizontalTextPosition(JLabel.CENTER);
    this.setVerticalTextPosition(JLabel.CENTER);
    this.setHorizontalAlignment(0);
}
Run Code Online (Sandbox Code Playgroud)

这是我创建盒子布局的地方:

 pnlMain.setLayout(new BoxLayout(pnlMain, BoxLayout.Y_AXIS));
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的 JFrame 扩展类中的主要函数。功能之上只是面板、按钮和标签的创建。

public Window()
{
    //Create the JFrame
    super("Tank Trouble");
    this.pack();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);

    //Changes the frame size to your screen size
    Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (int) (dimension.getWidth());
    int y = (int) (dimension.getHeight());
    setSize(x,y);
    setResizable(false);
    //GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(this); //Makes the application go fullscreen

    getContentPane().add(pnlMaster);

    pnlMaster.add(pnlMenu, "Main Menu");
    pnlMaster.add(pnlOptions, "Options");
    pnlMaster.add(pnlGame, …
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager boxlayout

3
推荐指数
1
解决办法
1807
查看次数

如何将scrollPane放在BoxLayout上?

我想有我JFrame,有一个BoxLayout能够有一个滚动窗格,所以我可以刚在论坛加入一样,如果它是一个收据或发票打印机。有没有添加方法ScrollPane

问题:如何将ScrollPane添加到JFrame?

代码,最初在这里看到:

import java.awt.EventQueue;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

/** @see /sf/answers/595332741/ */
public class GroupPanel extends JPanel {
    private static final long serialVersionUID = 1L;
    private JLabel label1     = new JLabel("Primary:");
    private JTextField field1 = new JTextField(16);
    private JLabel label2     = new JLabel("Secondary:");
    private JTextField field2 = new JTextField(16);
    private JLabel label3     = new JLabel("Tertiary:");
    private JTextField …
Run Code Online (Sandbox Code Playgroud)

java swing jpanel jscrollpane boxlayout

3
推荐指数
1
解决办法
2663
查看次数

如何让 JButton 垂直填充 BoxLayout?

用图片来解释最容易,所以就在这里。这是它现在的样子:

图片

我试图让所有 JButton 的大小相同,即完全垂直填充 BoxLayout。

这是我的代码:

public class TestarBara extends JFrame implements ActionListener{

JButton heyy;

public static void main(String[] args){
    new TestarBara();
}
    JPanel panel = new JPanel();
    JPanel panel2 = new JPanel();

    public TestarBara(){
    super("knapparnshit");
    panel.setLayout(new GridLayout(3,3,2,2));

    for(int x=1; x < 10; x++){
        String y = Integer.toString(x);
        JButton button = new JButton(y);
        button.addActionListener(this);
        panel.add(button);
    }
    add(panel, BorderLayout.CENTER);

    JButton b1 = new JButton("this");
    JButton b2 = new JButton("does");
    JButton b3 = new JButton("not");
    JButton b4 = new JButton("work");

    panel2.setLayout(new BoxLayout(panel2, …
Run Code Online (Sandbox Code Playgroud)

java swing jbutton layout-manager boxlayout

3
推荐指数
1
解决办法
1385
查看次数

如何在 BoxLayout 中居中 JLabel 和 JButton

我想创建具有困难级别的简单菜单

截屏

接下来的几行代码是构造函数。

super();

setMinimumSize(new Dimension(600, 300));

setMaximumSize(new Dimension(600, 300));

setPreferredSize(new Dimension(600, 300));

setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

addButtons();
Run Code Online (Sandbox Code Playgroud)

方法addButtons()添加按钮,您可以在屏幕截图中看到:

add(Box.createVerticalGlue());

addLabel("<html>Current level <b>" + Game.instance()
                                         .getLevelString() +
         "</b></html>");

add(Box.createVerticalGlue());

addButton("Easy");

add(Box.createVerticalGlue());

addButton("Normal");

add(Box.createVerticalGlue());

addButton("Hard");

add(Box.createVerticalGlue());

addButton("Back");

add(Box.createVerticalGlue());
Run Code Online (Sandbox Code Playgroud)

方法addButton()

private void addButton(String text)
{
    JButton button = new JButton(text);
    button.setAlignmentX(JButton.CENTER_ALIGNMENT);
    button.setFocusable(false);

    add(button);
}
Run Code Online (Sandbox Code Playgroud)

addLabel()

private void addLabel(String text)
{
    JLabel label = new JLabel(text, JLabel.CENTER);

    add(label);
}
Run Code Online (Sandbox Code Playgroud)

我不知道如何将所有元素对齐到中心。这对我来说是个问题。另一个问题是,当我将困难级别文本更改JLabel为简单的“当前级别简单”时。然后JButtons向右移动很多像素,我不知道为什么。

java swing awt layout-manager boxlayout

3
推荐指数
1
解决办法
5550
查看次数

使用 JPanel 的 Y_AXIS 约束在 BoxLayout 内将 JLabel 向左或向右对齐

我有一个带有 Y_Axis 约束的 JPanel,这样每当我添加一个新组件时,它都会自动添加到新行上。但问题是里面的标签没有左对齐或右对齐。它显示在 JTable 上方一定距离处。如何在所需的 Alginment 中显示 JLabel。

JPanel panel = new JPanel();

panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));
Run Code Online (Sandbox Code Playgroud)

然后我在面板内添加了一个 JLabel。

JLabel labelSemester = new JLabel("Semester 1: ",SwingConstants.LEFT);
panel.add(labelSemester);
Run Code Online (Sandbox Code Playgroud)

标签后,我在面板内添加了一个新的 JTable,

// Column Names for the Table
Object[] col_names = {"ID", "Name", "CH", "Marks", "Grade"};
// row data for the table
Object[][] table_rows = {{"CS123","Introduction to Computing",3,80,"A-"}};// One row only

JTable table = new JTable(table_rows, col_names);

panel.add(new JScrollPane(table));
Run Code Online (Sandbox Code Playgroud)

然后我添加了一个 JFrame 并添加了面板以显示在框架中

JFrame frame = new JFrame();
// frame Title
frame.setTitle("DMC");
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); …
Run Code Online (Sandbox Code Playgroud)

java swing jlabel layout-manager boxlayout

3
推荐指数
1
解决办法
3262
查看次数