问个JAVA控件位置放置问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问个JAVA控件位置放置问题相关的知识,希望对你有一定的参考价值。

书上只有几种存放方式 比如GrildLayout 现在我不想这么弄 局限性太大 比如我想定义个控件放在(40,40)这个坐标点该如何操作 具体代码举个小例子最好
import java.awt.*;
import java.awt.event.*;
class Diary extends Frame

public Diary()

setSize(1600,800);
setTitle("尝试");

Panel a=new Panel();
a.setBackground(Color.black);
a.setBounds(50,50,30,30);
Panel b=new Panel();
b.setBackground(Color.red);
b.setBounds(50,100,30,30);
this.add(a);
this.add(b);

setVisible(true);


public static void main(String[] args)

Diary mainFrame=new Diary();


怎么达不到效果?

参考技术A 如果你不用布局管理器来做的话,可以用VE 或者 WindowBilder 或者 swt 来做,
就是下载以上插件,直接拖动相应的控件到面板里,把主容器layout设为null以后自行设置控件坐标,大小

手写也行:

import java.awt.*;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;

public class LocationTest extends JFrame

private static final long serialVersionUID = 1L;
private JComponent c = new JButton("控件一");

public void frameInits()
this.setLayout(null);//设为null
this.setBounds(150, 120, 400, 300);
this.setBackground(Color.LIGHT_GRAY);
c.setBounds(40, 40, 100, 50);//设定坐标,大小
this.add(c);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);



public static void main(String[] args)
new LocationTest().frameInits();


参考技术B .setBounds(40, 40, 30, 30);
后两个30是宽和长

==================
看了你的程序,你再加一句,this.setLayout(null);就可以了,我运行了本回答被提问者采纳

使用java中的swing将按钮放置在指定位置

【中文标题】使用java中的swing将按钮放置在指定位置【英文标题】:Placing buttons in a specified location using swing in java 【发布时间】:2012-12-01 18:58:31 【问题描述】:

我正在尝试学习如何制作 JAVA 程序并且我正在使用 Swing。我正在尝试在窗口的左上角放置一个按钮,并且它一直在顶部中心。

public void createGUI()
    JFrame frame = new JFrame("My Project");
    frame.setDefaultCloseOperation(3);
    frame.setSize(400, 350);
    frame.setVisible(true);

    JPanel panel = new JPanel();

    frame.add(panel);

    addButtonGUI(panel, new JButton(), "test", 1, 1);


public void addButtonGUI(JPanel panel, JButton button, String text, int x, int y)
    GridBagConstraints gbc = new GridBagConstraints();
    button.setText(text);
    button.setEnabled(true);
    gbc.gridx = x;
    gbc.gridy = y;
    gbc.gridwidth = 2;
    gbc.weightx = 1.0D;
    gbc.fill = 2;
    panel.add(button, gbc);

我做错了什么还是有更好的方法来做到这一点? 请帮忙

【问题讨论】:

frame.setDefaultCloseOperation(3); 不要使用幻数。 J2SE 为这些值提供了描述性命名的常量。 【参考方案1】:

您需要将JPanel的布局设置为GridBagLayout才能使用GridBagConstraints

JPanel panel = new JPanel(new GridBagLayout());

此外,由于您只有一个有效的“单元格”,您需要使用锚点并将 weighty 设置为 JButton 以允许在 Y 轴上移动。

gbc.anchor = GridBagConstraints.NORTHWEST;
gbc.weighty = 1.0;

我还将fill 设置为NONE

gbc.fill = GridBagConstraints.NONE;

这样按钮就不会占据面板的整个宽度。 (2 = 水平填充)。

【讨论】:

【参考方案2】:

而不是

addButtonGUI(panel, new JButton(), "test", 1, 1);

如果你使用会发生什么

addButtonGUI(panel, new JButton(), "test", 0, 0);

【讨论】:

以上是关于问个JAVA控件位置放置问题的主要内容,如果未能解决你的问题,请参考以下文章

在子控件后面放置一个装饰层

放置在 UIImage 上方时,分段控件不起作用

刚学java的小白想问个关于读取键盘输入数字的问题

javafx窗体面板位置

问个关于JAVA排列组合代码的问题

问个Java中String创建的问题