這是一個使用miglayout的swing中簡單記事本的代碼。我已經使用了span和grow來填充水平空間,但填充和增長不能用作行約束。爲什麼? 我希望textarea能夠填充所有可用空間的最小和最大尺寸,但這不會發生。下面是代碼:JTextarea沒有使用miglayout垂直增長
import javax.swing.*;
import net.miginfocom.swing.MigLayout;
import java.awt.*;
import java.awt.event.*;
public class Notepad{
JFrame jf;
JMenuBar jmbar;
JMenu jm1,jm2;
JMenuItem jmnew,jmopen,jmsave,jmexit;
JMenuItem jmselect,jmpaste,jmcopy,jmcut;
Notepad(){
jf=new JFrame("Notepad");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLayout(new MigLayout("debug,fill","","[push,grow]"));
/*Toolkit tk = Toolkit.getDefaultToolkit();
int xSize = ((int) tk.getScreenSize().getWidth());
int ySize = ((int) tk.getScreenSize().getHeight());
jf.setSize(xSize,ySize); */
jf.setExtendedState(Frame.MAXIMIZED_BOTH);
createTextArea();
createMenu();
//JTextArea txt=new JTextArea("", 0,0,);
jf.setMinimumSize(new Dimension(600,400));
jf.setVisible(true);
}
void createMenu(){
jmbar=new JMenuBar();
jm1=new JMenu("File");
jmnew=new JMenuItem("New");
jmopen=new JMenuItem("Open");
jmsave=new JMenuItem("Save");
jmexit=new JMenuItem("Exit");
jmexit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
System.exit(0);
}
});
jm1.add(jmnew);
jm1.add(jmopen);
jm1.add(jmsave);
jm1.addSeparator();
jm1.add(jmexit);
jmbar.add(jm1);
jm2=new JMenu("Edit");
jmcut=new JMenuItem("Cut");
jmcopy=new JMenuItem("Copy");
jmpaste=new JMenuItem("Paste");
jmselect=new JMenuItem("Select All");
jm2.add(jmcut);
jm2.add(jmcopy);
jm2.add(jmpaste);
jm2.add(jmselect);
jmbar.add(jm2);
jf.setJMenuBar(jmbar);
}
void createTextArea(){
JTextArea textArea = new JTextArea("", 10,40);
JScrollPane textScroll = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
textArea.setFont(new Font("Century Gothic", Font.BOLD, 12));
jf.add(textScroll,"grow,span,wrap");
}
public static void main(String s[]){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new Notepad();
}
});
}
}
thanks.yes,微調不是必需的。 – crazy4