我将使用下面的图片解释我的观点:
这个例子执行了项目:
正如您所看到的那样,用户重新调整了框架的大小,然后不会扩展组件本身,而是用灰色填充它:
我想知道如何重新调整JFrame的大小 框架根据用户的不同而扩大或缩小。
这是这个程序的主要类,我正在使用GridBag布局,在有人指出之前我明白了setSize函数可以被管理器覆盖,只有在编写完这个程序后才能实现。
请注意这实际上是一个项目,这只是我以前使用的另一个程序,我只想知道如何去做。
public class Email{
public static void main(String[] args) {
// The GUI thread is created, with the JFrame in the run method
SwingUtilities.invokeLater(new Runnable(){
public void run(){
JFrame frame = new Compose("Send an Email");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(700 , 600);
// This stops the program from being resized
frame.setResizable(true);
frame.pack();
frame.setVisible(true);
}
});
}
}
答案 0 :(得分:2)
看起来您正在使用GridBagLayout
。因此,您需要修改约束以获得所需的效果。
查看How to Use GridBagLayout上的Swing教程中的部分。
特别需要考虑weightx / weighty限制。这告诉布局如何在帧大小更改时分配空间。由于您的值为0,因此没有任何组件调整大小,组件显示在中心。我猜你想要文本字段调整大小。
请阅读教程,下载演示代码并使用它。然后修改您的布局以执行您想要的操作。
答案 1 :(得分:0)
import javax.swing.JFrame;
import javax.swing.JLabel;
public class emailjava extends JFrame{
public emailjava(){
adjustFrame();
}
/**
* variable declaration
**/
private final javax.swing.JLabel bccLbl= new javax.swing.JLabel();
private final javax.swing.JTextField bccText= new javax.swing.JTextField();
private final javax.swing.JTextField ccTExt= new javax.swing.JTextField();
private final javax.swing.JLabel jLabel1= new javax.swing.JLabel();
private final javax.swing.JLabel jLabel2= new javax.swing.JLabel();
private final javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
private final javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
private final javax.swing.JLabel messageLbl= new javax.swing.JLabel();
private final javax.swing.JTextArea messageText = new javax.swing.JTextArea();
private final javax.swing.JLabel subjectLbl= new javax.swing.JLabel();
private final javax.swing.JTextField subjectText= new javax.swing.JTextField();
private final javax.swing.JTextField toText= new javax.swing.JTextField();
//emd of the declaration
public final void adjustFrame(){
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
JLabel []array = {jLabel1,jLabel2,bccLbl,subjectLbl,messageLbl};
for (JLabel jLabel : array) {
jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
}
jLabel1.setText("To :");
jLabel2.setText("CC :");
bccLbl.setText("BCC :");
subjectLbl.setText("SubjectLine");
messageLbl.setText("MessageBody");
messageText.setColumns(20);
messageText.setRows(5);
jScrollPane1.setViewportView(messageText);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(messageLbl, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE)
.addComponent(subjectLbl, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(bccLbl, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(5, 5, 5)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(toText)
.addComponent(ccTExt)
.addComponent(bccText)
.addComponent(subjectText)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 391, Short.MAX_VALUE))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(35, 35, 35)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(toText, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ccTExt, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(bccText, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(bccLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(subjectText, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(subjectLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(messageLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}
public static void main(String[] args) {
new emailjava().setVisible(true);
}
}
这是我想出的代码我自己尝试了它并且它正在100%工作