- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 JscrollPane 时遇到问题。尝试连续添加几个按钮,然后继续添加一组行,它最初显示得很好,但是一旦我单击滚动条,所有按钮都会被包裹在框架中。我想使用 setBounds (没有任何布局),因为我必须根据元素的数量来扩展/减少行。
我做错了什么?
图片出现在这里:https://drive.google.com/drive/u/0/folders/0B-m6SCJULOTRdHZ6cUwxX041SHM
public class JFrameWindow extends JFrame {
private int num = 0;
private JPanel container = null;
private JScrollPane jsp = null;
public JFrameWindow( String framName ) {
super( framName );
container = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
//g2.setPaint(Paint);
//g2.fillOval(0, 0, getWidth(), getHeight());
g2.dispose();
}
@Override
public Dimension getPreferredSize() {
return new Dimension(1200, 800);
};
};
//container.setLayout(mgr);
jsp = new JScrollPane();
jsp.setViewportView(container);
jsp.setPreferredSize(new Dimension(1200, 800));
container.setPreferredSize(new Dimension(1200, 800));
//jsp.setBorder(new EtchedBorder(Color.BLACK, Color.GREEN));
//jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
this.add( jsp );
setSize(1200, 800);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void addButtons(String id, int a, int b) {
JButton button1 = new JButton(id);
button1.setBounds(10, num*30 + 10, 100, 20);
container.add(button1);
JButton stateButton = new JButton("ABC");
stateButton.setBounds(120, num*30 + 10, 100, 20);
container.add(stateButton);
JButton custButton = new JButton("DEF");
custButton.setBounds(230, num*30 + 10, 100, 20);
container.add(custButton);
JButton int1Button = new JButton("" + a);
int1Button.setBounds(340, num*30 + 10, 100, 20);
container.add(int1Button);
JButton int2Button = new JButton("" + b);
int2Button.setBounds(450, num*30 + 10, 100, 20);
container.add(int2Button);
num++;
container.repaint();
jsp.repaint();
this.repaint();
}
public static void main( String [] args ) {
JFrameWindow window = new JFrameWindow ( "Test" );
window.addButtons("Test1", 1, 2);
window.addButtons("Test2", 1, 2);
window.addButtons("Test3", 1, 2);
window.addButtons("Test4", 1, 2);
window.addButtons("Test5", 1, 2);
window.addButtons("Test6", 1, 2);
window.addButtons("Test7", 1, 2);
window.addButtons("Test8", 1, 2);
window.addButtons("Test9", 1, 2);
window.addButtons("Test10", 1, 2);
window.addButtons("Test11", 1, 2);
window.addButtons("Test12", 1, 2);
window.addButtons("Test13", 1, 2);
window.addButtons("Test14", 1, 2);
window.addButtons("Test15", 1, 2);
window.addButtons("Test16", 1, 2);
window.addButtons("Test17", 1, 2);
window.addButtons("Test18", 1, 2);
window.addButtons("Test19", 1, 2);
window.addButtons("Test20", 1, 2);
window.addButtons("Test21", 1, 2);
window.addButtons("Test22", 1, 2);
window.addButtons("Test23", 1, 2);
window.addButtons("Test24", 1, 2);
window.addButtons("Test25", 1, 2);
window.addButtons("Test26", 1, 2);
window.addButtons("Test27", 1, 2);
window.addButtons("Test28", 1, 2);
window.addButtons("Test29", 1, 2);
window.addButtons("Test30", 1, 2);
}
}
最佳答案
, but as soon as I click on the scroll bar, all the buttons get sort of word wrapped in the frame.
当您开始滚动时,面板将重新生效),这将导致调用布局管理器,然后布局管理器将确定所有组件的大小和位置。 JPanel
的默认布局管理器是 FlowLayout
,因此当当前行已满时,组件将换行到新行。
不要尝试使用 setBounds(...)。相反,您可以按照设计的方式使用布局管理器。
I would like to use setBounds (without any layout) as I have to extend/reduce the rows depending on the number of elements.
这并不是不使用布局管理器的理由。
例如,您可能有一个带有垂直 BoxLayout
的主面板。然后,每次需要添加一行组件时,您都会创建一个使用 FlowLayout
的子面板。您将组件添加到子面板,然后将子面板添加到主面板。
然后滚动条和滚动 Pane 将正常工作。
container.setPreferredSize(new Dimension(1200, 800));
不要尝试控制面板的首选大小。这又是布局管理器的工作。使用人为的首选尺寸时,滚动 Pane 将无法正常工作。
关于Java、JFC、 Swing ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431135/
我在使用 JscrollPane 时遇到问题。尝试连续添加几个按钮,然后继续添加一组行,它最初显示得很好,但是一旦我单击滚动条,所有按钮都会被包裹在框架中。我想使用 setBounds (没有任何布局
请引导我阅读一个不错的 jfcunit 教程, 请帮助我了解如何使用它,因为我找不到更多信息, 最佳答案 为什么不简单地为 Swing 应用程序使用另一个单元测试框架?JFC Unit 自 2004
据我了解, TreeMap : 1. Insert O( logN ) 2. Delete O( logN ) 3. Retrieve O( logN ) HashMap : 1. Insert O(
所以,我应该 use SparseArray instead of HashMap为了性能: 然而,SparseArray不是 JCF 的一部分并且不执行 Collection也不List也不Map
众所周知,Java和J#中禁止“多重继承”。但是,您可以使用 Java 和 J# 实现多个接口(interface),例如 Runnable。那么,您将如何编写自己的类来同时继承 JFC 和 WFC
使用 NetBeans(java),我使用 JFileChooser 创建了一个 JDialog,当我尝试使用 ComboBox 打开 lnk 文件夹(以其他方式工作正常)时,会引发异常并且未打开该文
我是一名优秀的程序员,十分优秀!