有谁可以解释为什么会发生这种情况? 图片在这里Image我无法上传,因为我是新用户。
setTitle("jNote");
pack();
setVisible(true);
setLayout(new BorderLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
Image icon = Toolkit.getDefaultToolkit().getImage("jNote.png");
setIconImage(icon);
答案 0 :(得分:4)
通常内容可以建议GUI大小。如果在添加组件后调用,pack()
将使GUI成为显示它们所需的最小大小。
import java.awt.BorderLayout;
import javax.swing.*;
public class JNote {
public JComponent getGui(int rows, int cols) {
JPanel p = new JPanel(new BorderLayout(2,2));
p.add(new JLabel("1"), BorderLayout.LINE_START);
JTextArea ta = new JTextArea(rows, cols);
JScrollPane sp = new JScrollPane(
ta,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
p.add(sp);
p.add(
new JLabel("Rows: " + rows + " " + "Columns: " + cols),
BorderLayout.PAGE_END);
return p;
}
public static void main(String[] args) {
Runnable r = new Runnable(){
public void run() {
int cols = 20;
JNote jNote = new JNote();
for (int rows=6; rows>0; rows-=2) {
JFrame f = new JFrame("jNote " + rows + "x" + cols);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setLocationByPlatform(true);
f.add(jNote.getGui(rows, cols));
f.pack();
f.setVisible(true);
}
}
};
SwingUtilities.invokeLater(r);
}
}
答案 1 :(得分:3)
通过首选尺寸设置尺寸时,您必须拨打pack()
才能应用首选尺寸。调整框架的大小也包含它,因此您的观察结果。
// component initializations
yourFrame.pack();
答案 2 :(得分:2)
这是你应该做的:
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.*;
public class JordanOsborn extends JFrame{
JPanel panel = new JPanel();
public JordanOsborn(){
super("jNote");
panel.setPreferredSize(new Dimension(400,300));
add(panel);
Image icon = Toolkit.getDefaultToolkit().getImage("jNote.png");
setIconImage(icon);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable(){
public void run() {
new JordanOsborn();
}
});
}
}