【发布时间】:2012-05-20 07:49:41
【问题描述】:
我对 java 并不完全陌生(我已经使用它一年了),但这是我第一次尝试摇摆。我正在尝试制作一个非常简单的聊天客户端来同时学习套接字和摆动。我的问题是“我必须怎么做才能正确对齐我的面板?”。我已经尝试了很多东西(虽然我的代码中没有它)。通常我自己做这样的事情,但我到了需要寻求帮助的地步。我需要改变重量吗?我希望客户看起来像这样。
这是它目前的样子。
这是我的代码。
package com.client.core;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Window extends JFrame{
private int screenWidth = 800;
private int screenHeight = 600;
public Window(){
//Initial Setup
super("NAMEHERE - Chat Client Alpha v0.0.1");
setResizable(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(screenWidth,screenHeight);
GridBagConstraints c = new GridBagConstraints();
//Main Panel
JPanel window = new JPanel();
window.setLayout(new GridBagLayout());
window.setBackground(Color.black);
//Panels
JPanel display = new JPanel();
JPanel chat = new JPanel();
chat.setLayout(new GridBagLayout());
JPanel users = new JPanel();
display.setBackground(Color.blue);
c.gridx = 0;
c.gridy = 0;
c.insets= new Insets(5,5,5,5);
window.add(display, c);
chat.setBackground(Color.red);
c.gridx = 0;
c.gridy = 3;
c.gridheight = 2;
c.gridwidth = 1;
c.insets= new Insets(5,5,5,5);
window.add(chat, c);
users.setBackground(Color.green);
c.gridx = 2;
c.gridy = 0;
c.insets= new Insets(5,5,5,5);
window.add(users, c);
//Buttons
//Text fields
JTextArea text = new JTextArea("DEREADFADSFEWFASDFSADFASDF");
c.gridx = 0;
c.gridy = 0;
chat.add(text);
JTextField input = new JTextField("type here to chat", 50);
c.gridx = 0;
c.gridy = 1;
c.insets= new Insets(5,5,5,5);
chat.add(input);
add(window);
}
static class ActLis implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
}
【问题讨论】:
-
GridBagLayout 很难用手写,特别是对于刚接触 Swing 的人。您可以通过使用 BorderLayout 更简单地实现该布局,左侧面板包含三个左侧组件。
-
同意 GridBagLayout 过于复杂,特别是如果您是摇摆新手。我建议使用 MigLayout 或 JGoodies FormLayout。允许复杂的布局,但更清楚如何布局面板。
-
@Vulcan 我正在尝试学习挥杆,而不是最简单的。我会试试 BorderLayout,我只是认为 GridBagLayout 似乎是最通用的,并且从长远来看最有用。
-
我有点不同意 GridBagLayout 只应与 GUI 构建器一起使用。我个人不喜欢 GUI 构建器,但那是宗教性的。 GridBagLayout 有一些基本概念,可能看起来很难学,但实际上很符合逻辑。与 HTML 表格的相似之处是显而易见的,并且基于您的想法使其不难掌握。将 GridBagLayout 与 Model 结合起来,它变得非常强大且易于编写。对于它的价值,我倾向于主要使用 BorderLayout、GridBagLayout 和有时 FlowLayout。
标签: java swing layout gridbaglayout