package GUI;
import java.awt.*;
import javax.swing.*;
public class MultiPanels {
private JScrollPane getContent() {
Dimension d = new Dimension(300,200);
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints gbc= new GridBagConstraints();
gbc.weightx = 1.0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridwidth = GridBagConstraints.REMAINDER;
panel.add(getPanel(d, 6, Color.red), gbc);
panel.add(getPanel(d, 4, Color.green.darker()), gbc);
panel.add(getPanel(d, 4, Color.orange), gbc);
panel.add(getPanel(d, 12, Color.blue), gbc);
panel.add(getEmptyPanel(d), gbc);
return new JScrollPane(panel);
}
private JScrollPane getPanel(Dimension d, int rows, Color color) {
JPanel panel = new JPanel(new GridBagLayout());
panel.setBackground(color);
GridBagConstraints gbc= new GridBagConstraints();
gbc.insets = new Insets(10,5,10,5);
gbc.weightx = 1.0;
for(int i = 0, j = 1; i < rows; i++) {
gbc.gridwidth = GridBagConstraints.RELATIVE;
panel.add(new JButton(String.valueOf(j++)), gbc);
gbc.gridwidth = GridBagConstraints.REMAINDER;
panel.add(new JButton(String.valueOf(j++)), gbc);
}
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setPreferredSize(d);
return scrollPane;
}
private JScrollPane getEmptyPanel(Dimension d) {
JPanel panel = new JPanel() {
protected void paintComponent(Graphics g) {
int w = getWidth();
int h = getHeight();
GradientPaint gp = new GradientPaint(0,0,Color.red,
0,h,Color.cyan);
((Graphics2D)g).setPaint(gp);
g.fillRect(0,0,w,h);
}
};
panel.setPreferredSize(new Dimension(300,400));
JScrollPane scrollPane = new JScrollPane(panel);
scrollPane.setPreferredSize(d);
return scrollPane;
}
public static void main(String[] args) {
JFrame f = new JFrame();
JScrollPane jp = new MultiPanels().getContent();
jp.setSize(new Dimension(200, 200));
jp.setMaximumSize(new Dimension(200,200));
jp.setPreferredSize(new Dimension(200,200));
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(jp);
f.setSize(400,400);
f.setLocation(200,200);
f.setResizable(false);
f.setVisible(true);
}
}
任何时候东西的大小或排列不正确,你必须查看布局。
通常,多花点时间在:
http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
问题内容: 我有一个带有两个单独的JPanels的JFrame。一个JPanels充满了JButton,而另一个则有几个文本字段。我通过JFrame在按钮上添加了鼠标侦听器,我希望这样做,以便从第一个JPanel触发事件时,第二个JPanel中的文本字段会发生更改。这两个面板有各自的类。我将如何去做呢? 问题答案: 使用MVC,Model-View-Control,关注点分离。 让拥有您的听众的控
我有一个带有两个独立JPanels的JFrame。其中一个JPanels填充了JButtons,而另一个则有几个文本字段。我通过JFrame向按钮添加了鼠标监听器,我想让它在第一个JPanel触发一个事件时,第二个JPanel中的文本字段发生变化。这两个面板有自己的类。我该如何着手做这件事?
我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?
我正在使用 开发一个 Swing GUI。 有一个 ,其中包含两个 。后来我想在s中显示一些组件,我剪掉了这部分代码,使它更短。 如何将调整为的大小?不起作用,如果没有行设置首选大小,GUI将以最小大小显示。 编辑:我可以更改首选的大小行以适应最大的JPanel,但我提出这个问题是因为我希望< code>JFrame根据< code>JPanel的大小动态调整大小。
问题内容: 我现在有一个发送HTTP请求的SwingWorker,并且我重写了SwingWorker的done()方法来更改JFrame中的内容。我想基本上删除所有内容,并根据服务器返回的值在JFrame上添加一个新的成员面板。 现在,我面临的问题是,当我在JFrame上调用以下方法时,它不会从JFrame中删除任何内容,也不会更改它在Frame中包含的内容。 我当前的修复方法如下,但我宁愿更改J
问题内容: 我有一个,其内容窗格为。为此,我添加了较小的,并且如预期的那样,如果添加太多,则会出现一个垂直滚动条。 问题是,我的小s包含一个过了。我想使用鼠标滚轮 仅 用于滚动面板外,而不是较小的滚动窗格。我已经设定到为小滚动面板,但如果我朝任意方向滚动,以及鼠标越过,滚动不工作了。 有什么建议吗? 问题答案: 您可以尝试将滚轮事件从内部滚动窗格转发到其父级。