JscrollPaneに問題があります。いくつかのボタンを連続して追加しようとすると、一連の行が続きますが、最初はうまく表示されますが、スクロールバーをクリックすると、すべてのボタンがフレームに巻き込まれます。私は要素の数に応じて行を拡張/縮小する必要があるので、setBounds(レイアウトなし)を使用したいと考えています。Java、JFC、Swing
私は間違っていますか?
ピックがここに表示されます: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);
}
}
ようこそ。あなたのタイトルは何も示唆していません。それはタグの意味です。より具体的な内容で編集してください。 – Mordechai