JAVA在ScrollPane中添加使用了网格布局的panel面板,怎么设置输出效果的总体宽度与页面一致(去掉底部滚动条)

花修文 2019-05-26 03:36:53
标题写的可能有点乱,没看懂具体看图片


上图是主界面,可以看到由三个菜单,现在主要的问题是,看下图



明显的可以看到,三行之间间距过大,明明可以不用下边的滚动条,但是不知道怎么设置,我采用的方法是panel网格布局,三列,现在主要疑惑是设置网格布局的方法,还是设置panel的方法(好像没啥方法)或JScrollPane的方法,也试过好几个但是全都失败了。
还有个问题就是上边的三级菜单,当我拖动滚动条时,无论是横向纵向,菜单都会被隐藏一部分,或者说是遮挡。但不拖动就不会出现这个问题,继续放图,大佬看好。

看上图会发现,此时我已将点击单元文件的菜单,可以看到有不明显的蓝色框线在下方panel面板和菜单条中间,编辑设置菜单也是同样的情况。


上图是我从新打开后不拖动滚动条的结果,可以看到能任意切换单元。

求大佬指点迷津


...全文
279 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
花修文 2019-05-26
  • 打赏
  • 举报
回复
代码如下
package 大二下JAVA大作业;
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Window_01 extends JFrame implements ActionListener,WindowListener{
ScrollPane sc= new ScrollPane (ScrollPane.SCROLLBARS_AS_NEEDED);
JPanel panel=new JPanel();
// JTextArea tarea =new JTextArea(30,70);
boolean yb=false;//是否开启音标的状态
boolean hy=false;//是否开启汉译的状态
int count=10;//用户定义的随机单词数量
public static void main(String[] args) {
Window_01 w1=new Window_01();
}


Window_01(){//界面
setTitle("闪过背单词系统");

JMenuBar menuBar = new JMenuBar();
JMenu aMenu = new JMenu("单元文件");
JMenu bMenu = new JMenu("编辑设置");//�˵�
JMenu cMenu = new JMenu("刷新");
JMenu aaMenuItem = new JMenu("1~6");//子菜单
JMenuItem aa1= new JMenuItem("World List 1");//菜单项
JMenuItem aa2= new JMenuItem("World List 2");
JMenuItem aa3= new JMenuItem("World List 3");
JMenuItem aa4= new JMenuItem("World List 4");
JMenuItem aa5= new JMenuItem("World List 5");
JMenuItem aa6= new JMenuItem("World List 6");

JMenu abMenuItem = new JMenu("7~12");//子菜单
JMenuItem aa7= new JMenuItem("World List 7");//菜单项
JMenuItem aa8= new JMenuItem("World List 8");
JMenuItem aa9= new JMenuItem("World List 9");
JMenuItem aa10= new JMenuItem("World List 10");
JMenuItem aa11= new JMenuItem("World List 11");
JMenuItem aa12= new JMenuItem("World List 12");

JMenu acMenuItem = new JMenu("12~18");//子菜单
JMenuItem aa13= new JMenuItem("World List 13");
JMenuItem aa14= new JMenuItem("World List 14");
JMenuItem aa15= new JMenuItem("World List 15");
JMenuItem aa16= new JMenuItem("World List 16");
JMenuItem aa17= new JMenuItem("World List 17");//菜单项
JMenuItem aa18= new JMenuItem("World List 18");

JMenu adMenuItem = new JMenu("18~24");//子菜单
JMenuItem aa19= new JMenuItem("World List 19");
JMenuItem aa20= new JMenuItem("World List 20");
JMenuItem aa21= new JMenuItem("World List 21");
JMenuItem aa22= new JMenuItem("World List 22");
JMenuItem aa23= new JMenuItem("World List 23");
JMenuItem aa24= new JMenuItem("World List 24");
JMenuItem baMenuItem = new JMenuItem("随机数量");
JMenuItem bbMenuItem = new JMenuItem("开启/关闭音标");
JMenuItem bcMenuItem = new JMenuItem("开启/关闭汉译");

baMenuItem.addActionListener(this);//监听事件
bbMenuItem.addActionListener(this);
bcMenuItem.addActionListener(this);

menuBar.add(aMenu);//将文件菜单添加到菜单条中

aMenu.add(aaMenuItem);
aaMenuItem.add(aa1);
aaMenuItem.add(aa2);
aaMenuItem.add(aa3);
aaMenuItem.add(aa4);
aaMenuItem.add(aa5);
aaMenuItem.add(aa6);

aMenu.addSeparator();
aMenu.add(abMenuItem);
abMenuItem.add(aa7);
abMenuItem.add(aa8);
abMenuItem.add(aa9);
abMenuItem.add(aa10);
abMenuItem.add(aa11);
abMenuItem.add(aa12);

aMenu.addSeparator();
aMenu.add(acMenuItem);
acMenuItem.add(aa13);
acMenuItem.add(aa14);
acMenuItem.add(aa15);
acMenuItem.add(aa16);
acMenuItem.add(aa17);
acMenuItem.add(aa18);
aMenu.addSeparator();
aMenu.add(adMenuItem);
adMenuItem.add(aa19);
adMenuItem.add(aa20);
adMenuItem.add(aa21);
adMenuItem.add(aa22);
adMenuItem.add(aa23);
adMenuItem.add(aa24);

//监听事件
aa1.addActionListener(this);
aa2.addActionListener(this);
aa3.addActionListener(this);
aa4.addActionListener(this);
aa5.addActionListener(this);
aa6.addActionListener(this);
aa7.addActionListener(this);
aa8.addActionListener(this);
aa9.addActionListener(this);
aa10.addActionListener(this);
aa11.addActionListener(this);
aa12.addActionListener(this);
aa13.addActionListener(this);
aa14.addActionListener(this);
aa15.addActionListener(this);
aa16.addActionListener(this);
aa17.addActionListener(this);
aa18.addActionListener(this);
aa19.addActionListener(this);
aa20.addActionListener(this);
aa21.addActionListener(this);
aa22.addActionListener(this);
aa23.addActionListener(this);
aa24.addActionListener(this);


menuBar.add(bMenu);//将文件菜单添加到菜单条中
menuBar.add(cMenu);
bMenu.add(baMenuItem);
bMenu.addSeparator();
bMenu.add(bbMenuItem);
bMenu.addSeparator();
bMenu.add(bcMenuItem);
setJMenuBar(menuBar);

setVisible(true);
setBounds(300,100,800,600);
setResizable(false);
this.addWindowListener(this);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

add(sc);
sc.add(panel);

// panel.add(tarea);//面板添加标签
// getContentPane().add(panel, BorderLayout.CENTER);
}

public void actionPerformed(ActionEvent e) {//事件
panel.removeAll();//清空所有组件
JMenuItem source = (JMenuItem) (e.getSource());//判断单元数

String str=source.getText();

if(str=="刷新"){
new Window_01();
}
str=str.substring(str.length()-2,str.length());
str=str.trim();
int i=Integer.parseInt(str);

JOptionPane.showMessageDialog(this, "当前为第"+i+"单元","提示ʾ",JOptionPane.WARNING_MESSAGE);
try {

Exam01 ex=new Exam01(i);

JLabel []dc=new JLabel[ex.sum];
JLabel []yb=new JLabel[ex.sum];
JLabel []hy=new JLabel[ex.sum];
for(int j=0;j<ex.sum;j++){
GridLayout G1=new GridLayout(ex.sum,3);
G1.setVgap(10);
dc[j]=new JLabel(ex.danci[j]);
yb[j]=new JLabel(ex.yinbiao[j]);
hy[j]=new JLabel(ex.hanyu[j]);
dc[j].setFont(new Font("宋体",Font.BOLD, 16));
yb[j].setFont(new Font("宋体",Font.BOLD, 16));
hy[j].setFont(new Font("宋体",Font.BOLD, 16));

panel.setLayout(G1);
panel.add(dc[j]);
panel.add(yb[j]);
panel.add(hy[j]);
//System.out.println(u[j].getText());
//panel.add(u[j]);

}
panel.updateUI();//刷新面板,将单词输出
ex.sum=0;//单词数量清零,避免两个单元单词数量相加
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
System.out.println("出错");
}


// String name=e.getActionCommand();//获取菜单项的名称用来对照事件
//
//
// if(name.equals("随机数量")){
// String str1=JOptionPane.showInputDialog(this,"请输入随机数量,默认数量10","输入",JOptionPane.INFORMATION_MESSAGE);
// if(Integer.parseInt(str1)>=0 && Integer.parseInt(str1)<=100){
// JOptionPane.showMessageDialog(this, "更改成功","提示信息",JOptionPane.WARNING_MESSAGE);
// }
// else{
// JOptionPane.showMessageDialog(this, "更改失败,请检查数据是否合法","提示信息",JOptionPane.ERROR_MESSAGE);
// }
// }
//
// if(name.equals("开启/关闭音标")) {
// if(yb==true) {
// yb=false;
// JOptionPane.showMessageDialog(this, "音标功能已开启","提示信息",JOptionPane.WARNING_MESSAGE);
// }else {
// yb=true;
// JOptionPane.showMessageDialog(this, "音标功能已关闭","提示信息",JOptionPane.WARNING_MESSAGE);
// }
// }
// if(name.equals("开启/关闭汉译")) {
// if(hy==true) {
// hy=false;
// JOptionPane.showMessageDialog(this, "汉译功能已开启","提示",JOptionPane.WARNING_MESSAGE);
// }else {
// hy=true;
// JOptionPane.showMessageDialog(this, "汉译功能已关闭","提示",JOptionPane.WARNING_MESSAGE);
// }
// }

}

@Override
public void windowActivated(WindowEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void windowClosed(WindowEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void windowClosing(WindowEvent arg0) {
// TODO Auto-generated method stub
if(JOptionPane.showConfirmDialog(this, "确认关闭","关闭",JOptionPane.OK_CANCEL_OPTION)==JOptionPane.OK_OPTION) {
System.exit(0);
}
}

@Override
public void windowDeactivated(WindowEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void windowDeiconified(WindowEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void windowIconified(WindowEvent arg0) {
// TODO Auto-generated method stub
}

@Override
public void windowOpened(WindowEvent arg0) {
// TODO Auto-generated method stub

}
}

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧