首先说一下,本文主要记录个人在学习Java Swing中遇到的问题,由于之前接触过swing,所以不会讲的很详细。
如果学习和了解Java Swing,建议直接看视频,下面的讲的还是挺不错的
https://www.bilibili.com/video/av6929015/?p=30
①BorderLayout如何修改各个区域大小?
答案:使用 setPreferredSize(Dimension d)的方法
例如:
这个是最普通的用法了,五个部分各放一个,如果不加东西,他们的各部分的大小都永远是这么大
那么我们加上一句
bt[1].setPreferredSize( new Dimension(0,100) );//bt1是北部的一个按钮
参数是一个Dimension类型,0和100分别表示宽和高,但是北部的东西你是改不了宽的,这也是为什么我写0的原因,其实你写多少都没有用,第二个参数才是决定北部的高度。
然后就变成这样啦
相信你们很聪明,能够举一反三,如果不懂,可以参考下面:
http://blog.csdn.net/zcsearching/article/details/50808446
②如何使框体不能改变大小?
一般的界面都是不能让用户改变大小的
加上一句:
this.setResizable(false);
就好了,this是JFrame里面的
③布局管理器不定义的时候,默认是BorderLayout
④定义一个带背景的panel
package mypackage;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import javax.swing.*;
import java.util.*;
/*
* 使图片作为背景的类
*/
public class Mypanel extends JPanel
{
ImageIcon img;
public Mypanel( ImageIcon img )
{
this.img = img;
}
public void paintComponent( Graphics g )
{
super.paintComponent(g);
g.drawImage(img.getImage(),0,0,null);
}
}
调用的时候是下面的用法
ImageIcon bigicon = new ImageIcon("pictures\\主界面飞机.jpg"); //定义ImageIcon
JPanel panel = new Mypanel(bigicon); //定义一个带背景的panel
其实主要是调用了Graphics 里面的drawImage方法
那么,按照视频上的讲解,还可以写成下面这样:
Image image = Toolkit.getDefaultToolkit().getImage
( Panel.class.getResource("/飞机.jpg") );
System.out.println("调用print");
g.drawImage(image, 0, 0,300,150,this);
⑤ScrollPane与JLabel一起使用
最近在编程的时候想做出一个JLabel的滚动效果出来,类似于下面这样
但是就是遇到了一些问题,滚动条一直不出来,下面是我本来的代码
import java.awt.*;
import java.util.*;
import javax.swing.*;
public class Main
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
public Main()
{
panel.setLayout( new GridLayout(3,1) );
panel.setSize(200,200);
JButton button = new JButton();
String s = "<html><body>"+
"<p style=\"font-family:verdana;font-size:150%;color:red\">"+
"hello"+
"</p>"+
"</body></html>";
button.setText(s);
JLabel lb1 = new JLabel(s);
panel.add(lb1);
JLabel lb2 = new JLabel(s);
panel.add(lb2);
JLabel lb3 = new JLabel(s);
panel.add(lb3);
JScrollPane pane = new JScrollPane(panel);
pane.setSize(100,100);
frame.add(pane);
frame.setSize(500, 400);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main( String args[] )
{
Main m = new Main();
}
}
相信大家也能看懂,就是三个JLabel,加到一个JPanel里面,JPanel用一个JScrollPane,JScrollPane放到JFrame里面
看起来似乎没错,但是运行过后没有预料的结果,但是加了一句 frame.setlayout(null); 就可以了
虽然不知道为啥,但还是记下来吧,感觉迷迷糊糊的
⑥HTML中空格,tab和换行
Swing控件中内容可能会用到HTML
那么对于常见的常见的三个
空格是:
Tab是: 	
换行是: <br>
用的时候直接加到内容里面就行了
⑦JTable中内容居中需要加上三句话
DefaultTableCellRenderer cr = new DefaultTableCellRenderer(); //表格字体居中
cr.setHorizontalAlignment(JLabel.CENTER);
jtable.setDefaultRenderer(Object.class, cr); //主要是这句话起作用