我想制作一个窗口,其中两个按钮的高度很高,一侧有一个滚动条。问题是没有滚动条出现。这是我的代码
public class Window {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//namestanje teme
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame frame = new JFrame("frame");
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(null);
JButton but1 = new JButton();
JButton but2 = new JButton();
panel.add(but1);
panel.add(but2);
but1.setSize(50, 505);
but2.setSize(50, 505);
but1.setLocation(0, 0);
but2.setLocation(400, 400);
but1.setText("1");
but2.setText("2");
JScrollPane scroll = new JScrollPane(panel);
frame.add(scroll);
frame.setVisible(true);
}
}
注意:首先,按钮具有较大的宽度(通过使用类似“11111111111111111111111111111”的方式命名它们)并且会出现滚动条。然后我想要很高的高度,不得不在面板中放置null。现在没有滚动条出现。
答案 0 :(得分:14)
当添加到scollpane的组件的首选大小大于滚动窗格的大小时,会出现滚动条。
布局管理器的工作是确定面板的首选大小。布局管理器的工作也是确定添加到面板的组件的大小和位置。
摆脱空布局并使用布局管理器,并在需要时自动显示滚动条。
如果希望组件的显示方式与垂直视图不同,则需要使用不同的布局管理器。也许你可以使用带有verticxal布局的BoxLayout。您可以使用:
panel.add( Box.createVerticalStrut(400) );
在两个组件之间添加垂直空间。
答案 1 :(得分:1)
要始终显示滚动条,请使用:
yourScrollBar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
...
import javax.swing.*;
import java.awt.*;
public class Window {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//namestanje teme
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JFrame frame = new JFrame("frame");
// frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setPreferredSize(new Dimension(100,95));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton but1 = new JButton();
JButton but2 = new JButton();
panel.add(but1);
panel.add(but2);
but1.setSize(50, 505);
but2.setSize(50, 505);
but1.setLocation(0, 0);
but2.setLocation(400, 400);
but1.setText("1");
but2.setText("2");
JScrollPane scroll = new JScrollPane(panel);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.setLayout(new FlowLayout());
frame.pack();
frame.add(scroll);
frame.setVisible(true);
}
}