Ben java için tam olarak yeni değilim (bunu bir yıldır kullanıyordum) ama bu benim ilk adımı atıyor. Bir kerede hem soket hem de salıncak öğrenmek için çok basit bir sohbet istemcisi yapmaya çalışıyorum. Sorum şu: "Panellerimi doğru şekilde hizalamak için ne yapmalıyım?" Çok fazla şey denedim (kodumda olmasa da). Genellikle böyle bir şeyi kendi başıma yapıyorum, ama yardım istemek zorunda olduğum noktaya geldim. Wieghtx'i değiştirmem gerek mi? İstemcinin nasıl görünmesini istediğim, bunun gibi bir şey. GridBagLayout ile panelleri hizalama
Bu
şu anda böyle görünüyor. İşte benim kodudur.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 özellikle Swing yeni insanlar için, elle yazmayı oldukça zordur kodudur. Bu düzeni, BorderLayout'un kullanımıyla, sol tarafta üç sol taraftaki bileşeni içeren bir panele sahip olacak şekilde çok daha kolay bir şekilde gerçekleştirebilirsiniz. – Vulcan
GridBagLayout öğesinin, özellikle de sallanmaya yeni iseniz, aşırı derecede karmaşık olduğunu kabul ettiniz. MigLayout veya JGoodies FormLayout kullanmanızı öneririz. Karmaşık düzenlere izin verin, ancak panellerin nasıl düzenleneceği konusunda daha net bir şekilde anlaşın. –
İlgili: http://stackoverflow.com/questions/10333559/gridbaglayout-jscrollpane-how-to-reduce-row-height – assylias