练习使用 JscrollPane。使用 BorderLayout 将 JFrame 布局分为左右两块;左边又使用 GridLayout,包含三个按钮,右边在 JLabel 里显示一幅图画,按钮控制 JLabel 是否显示滚动条。
//test9_7import java.awt.BorderLayout;import java.awt.Button;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.ScrollPaneConstants;public class test9_7 extends JFrame implements ActionListener { private JPanel jPanel; //左边panel框 private Button button1; private Button button2; private Button button3; private JScrollPane jscrollPane; //右边滚动框 private JLabel label; //滚动框中的标签 public ImageIcon picture = null; //标签中的图标 public boolean whetherCroll = true; //用于切换滚动条的显示 public void init() { JFrame jFrame = new JFrame("练习使用JscrollPane"); Container pane = jFrame.getContentPane(); this.setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE)); // 定义左边镶板JPanel框和三个按钮 jPanel = new JPanel(new GridLayout(3, 1, 0, 30)); button1 = new Button("滚动"); button1.addActionListener(this); button2 = new Button("试试"); button2.addActionListener(this); button3 = new Button("退出"); button3.addActionListener(this); jPanel.add(button1); jPanel.add(button2); jPanel.add(button3); // 读取图片作为图标 picture = new ImageIcon("D:/image/fuck.jpg/"); // 将图标赋给标签label label = new JLabel(picture); // 定义滚动框,总是显示滚动条 jscrollPane = new JScrollPane(label, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); // 将左右两边的中间容器放弃JFrame中 pane.add(jPanel, BorderLayout.WEST); pane.add(jscrollPane, BorderLayout.EAST); //排版显示 jFrame.pack(); jFrame.setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if (e.getActionCommand() == "滚动") { if (whetherCroll) { jscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); //垂直不显示 jscrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); //水平不显示 whetherCroll = false; } else { jscrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); //垂直显示 jscrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); //水平显示 whetherCroll = true; } } if (e.getActionCommand() == "试试") { JOptionPane.showMessageDialog(this, "oh,,,Fuck your teacher? yeal……good!"); } if (e.getActionCommand() == "退出") { System.exit(0); } } public static void main(String[] args) { new test9_7().init(); }}运行结果:显示滚动条[img=544x369]17afc72b1af3187.png[/img]点击“滚动”按钮后,没显示滚动条[img=542x371]17afc730208ce69.png[/img]
举一反三
- 当JFrame的大小被改变时JFrame中的按钮的位置可能被改变,使用的哪一个布局管理器() A: BorderLayout B: FlowLayout C: CardLayout D: GridLayout
- 创建一个按钮,正确语句是()。 A: JFrame f=new JFrame("成绩管理"); B: JLabel l1=new JLabel("姓名"); C: JTextField t1=new JTextField(); D: JButton b1=new JButton("添加");
- 要创建命令按钮,应使用下列哪个类? A: Font B: Color C: JLabel D: JButton
- (1503-75)采用()布局管理器,当改变JFrame大小时,JFrame中的按钮大小不会发生改变。 A: GridLayout B: BorderLayout C: GridBagLayout D: FloyLayout
- 在计算器制作中,要将按钮排成规则的3行4列,使用()布局最合适。 A: FlowLayout B: BorderLayout C: GridLayout D: BoxLayout
内容
- 0
在Word2010中,通常使用()来控制翻屏显示文档内容。 A: 控制框 B: 最大化按钮 C: 滚动条 D: 标尺
- 1
要获得JLabel上显示的文本信息,应使用()方法 A: setText() B: settext() C: getText() D: getContent()
- 2
当Frame改变大小时,放在其中的按钮大小不变,则使用如下哪种布局方式? A: FlowLayout B: CardLayout C: BorderLayout D: GridLayout
- 3
拖动Word滚动条中的滚动块可以( ) A: 滚动显示编辑窗口中的内容 B: 显示命令工具按钮 C: 弹出命令菜单 D: 得到帮助信息
- 4
Java程序的左侧。而将要显示在程序右侧的三个面板中的一个取决于当前在主面板上被激活的按钮。为此程序你将使用下列哪一个layout? A: BorderLayout B: GridLayout C: BoxLayout D: FlowLayout