先让大家看下图这张用的是layout是BorderLayout,中间的特别大,两边的特别小
有3个JPanel,shortcutsPane、checkoutPane、中间的centerPane
下面是我想要的样子不知道怎么实现,是不是有什么方法可以设置JPanel所占的百分比,这样可以随窗口的变化而变化
同时我的shortcutsPane用的GridLayout,高度特别高,我想要三个pane的高度都跟中间的一样,需要如何处理
请直接
有3个JPanel,shortcutsPane、checkoutPane、中间的centerPane
下面是我想要的样子不知道怎么实现,是不是有什么方法可以设置JPanel所占的百分比,这样可以随窗口的变化而变化
同时我的shortcutsPane用的GridLayout,高度特别高,我想要三个pane的高度都跟中间的一样,需要如何处理
请直接
解决方案 »
- 数组关于矩阵相乘
- 请教“try{}里面含有return,后面带着finally{},问return后finally里面的句子还会不会执行,什么时候执行”
- 考试题,打转的
- 关于java.sql.ResultSet的操作???
- Java虚拟机长时间运行后会自动减速?!
- 请问java中怎么把string转化成int类型?
- 关于98下的Applet问题!
- 如何读取midi文件,转换成16进制的编码
- 【急急急】请求帮助.C语言和JAVA.关系毕业前途.
- 关于applet的一个简单问题
- java 打出jar包后 读写excel数据源
- 求高手帮帮忙!!!NetBeans怎样判断按钮上图片的路径是否相同?在线等。。。
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;import layout.TableLayout;@SuppressWarnings("serial")
public class TypicalGui extends JFrame { public TypicalGui() {
super("Typical Gui"); double b = 5;
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
double[][] size = { { b, f, 5, p, 5, p, b }, { p, b, f, b, p, b } };
TableLayout layout = new TableLayout(size);
Container pane = getContentPane();
pane.setLayout(layout); addMenu(pane);
addCommandButtons(pane, layout);
addColorBoxes(pane, layout);
addTextArea(pane, layout); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 500);
setAlwaysOnTop(true);
setLocationRelativeTo(null);
setVisible(true);
} public void addMenu(Container pane) {
JMenuBar menuBar = new JMenuBar();
String[] menuText = { "File", "Edit", "View", "Help" };
String[][] itemText = { { "New", "Open", "Save", "Print" }, { "Cut", "Copy", "Paste" },
{ "Zoom in", "Zoom out" }, { "About", "Index", "Search" } }; for (int i = 0; i < menuText.length; ++i) {
JMenu menu = new JMenu(menuText[i]);
for (int j = 0; j < itemText[i].length; ++j) {
JMenuItem item = new JMenuItem(itemText[i][j]);
menu.add(item);
}
menuBar.add(menu);
} pane.add(menuBar, "0,0, 6,0"); // menu bar原来也可以这样加的哦
} public void addCommandButtons(Container pane, TableLayout layout) {
JPanel buttonsPanel = new JPanel();
pane.add(buttonsPanel, "1,4, 5,4");
((FlowLayout) buttonsPanel.getLayout()).setVgap(0); for (int i = 0; i < 5; ++i) {
buttonsPanel.add(new JButton("Button " + (i + 1)));
}
} // 直接在插入行添加,不用另外再做面板了
public void addColorBoxes(Container pane, TableLayout layout) {
Color[][] colors = { { Color.white, Color.black }, { Color.green, Color.blue },
{ Color.red, Color.yellow }, { Color.pink, Color.orange },
{ Color.magenta, Color.cyan } }; for (int i = 0; i < colors.length; ++i) {
layout.insertRow(2, TableLayout.PREFERRED);
layout.insertRow(2, 5); pane.add(new ColorBox(colors[i][0]), "3,3");
pane.add(new ColorBox(colors[i][1]), "5,3");
}
layout.deleteRow(2);
} // 因为是在插入行后再增加的,所以要计算行数
public void addTextArea(Container pane, TableLayout layout) {
JTextArea area = new JTextArea();
JScrollPane scroller = new JScrollPane(area);
int rowNum = layout.getRow().length;
pane.add(scroller, "1,2, 1," + (rowNum - 4));
} public static void main(String[] args) {
new TypicalGui();
}
}@SuppressWarnings("serial")
class ColorBox extends JComponent {
private Color color; public ColorBox(Color color) {
this.color = color;
} @Override
protected void paintComponent(Graphics g) {
super.paintComponent(g); Dimension size = getSize();
g.setColor(Color.BLACK);
g.drawRect(0, 0, size.width - 1, size.height - 1); g.setColor(color);
g.fillRect(1, 1, size.width - 1, size.height - 1);
} @Override
public Dimension getPreferredSize() {
return new Dimension(40, 20);
}
}