Pan*_*niz 4 java swing jpanel jframe jscrollpane
首先,我必须说我已经检查了这些问题,但没有找到我的答案:
还有很多其他问题
我也检查了这些教程和示例:
和许多其他网站.但我无法解决我的问题.
这是我的代码的简单类型:
public class Question extends JFrame {
public Question() {
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
setLayout(new BorderLayout());
setSize(d.width, d.height);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(d.width, d.height));
panel.setBorder(BorderFactory.createLineBorder(Color.red));
panel.setLayout(new BoxLayout(panel, 1));
for (int i = 0; i < 100; i++) {
panel.add(new JButton("kjdh"));
}
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setPreferredSize(new Dimension(500, 500));
getContentPane().add(scrollPane);
getContentPane().add(panel);
setVisible(true);
}
public static void main(String[] args) {
new Question();
}
}
Run Code Online (Sandbox Code Playgroud)
但是JScrollPane没有出现.我测试过很多东西.我已经改变了添加panel和scrollPane我的方式,frame但它没有用.任何人都可以帮助我吗?
And*_*son 14
BorderLayout组件,则使用默认布局()的内容窗格将默认将组件放入CENTER约束中,并且该CENTER区域只能接受单个组件.setSize,但是setExtendedState.DISPOSE_ON_CLOSE.import java.awt.*;
import javax.swing.*;
public class Question {
public Question() {
JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createLineBorder(Color.red));
panel.setLayout(new BoxLayout(panel, 1));
for (int i = 0; i < 100; i++) {
panel.add(new JButton("kjdh"));
}
JScrollPane scrollPane = new JScrollPane(panel);
f.getContentPane().add(scrollPane);
f.pack();
f.setExtendedState(JFrame.MAXIMIZED_BOTH);
f.setVisible(true);
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
new Question();
}
};
SwingUtilities.invokeLater(r);
}
}
Run Code Online (Sandbox Code Playgroud)
您在上下文窗格中添加了一个不必要的重复面板.代替:
getContentPane().add(scrollPane);
getContentPane().add(panel);
Run Code Online (Sandbox Code Playgroud)
仅限使用
getContentPane().add(scrollPane);
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为scrool窗格是面板的容器,因此在上下文窗格中添加容器就足够了.
| 归档时间: |
|
| 查看次数: |
7454 次 |
| 最近记录: |