2016-04-22 13 views
0

私が降りてから戻ってきたら、ボタンは消えます。私は理由を知らない...これについてのアドバイスはありますか?私はgoogle/stackoverflowで検索を試みたが、私は答えを見つけていない。とにかく、私はこの質問のための任意のアイデアを持っていない、私はすべてボタンが見えなくなる

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.GraphicsEnvironment; 
import java.awt.Point; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.border.EmptyBorder; 

public class GenerateExam extends JFrame { 

private JPanel contentPane; 
private JButton button; 

public GenerateExam() { 
    setTitle("Test"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(0, 0, 800, 600); 
    button = new JButton("Click me!"); 
    button.setBounds(50, 100, 100, 200); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    contentPane.setLayout(new BorderLayout(0, 0)); 
    contentPane.add(button); 

    setContentPane(contentPane); 
    JPanel container = new JPanel(); 
    JScrollPane jsp = new JScrollPane(container); 
    jsp.getVerticalScrollBar().setUnitIncrement(16); 
    container.setPreferredSize(new Dimension(750, 4000)); 
    container.setLayout(null); 

    getContentPane().add(jsp); 
    centerFrame(); 

} 

private void centerFrame() { 
    Dimension windowSize = getSize(); 
    GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    Point centerPoint = g.getCenterPoint(); 

    int dx = centerPoint.x - windowSize.width/2; 
    int dy = centerPoint.y - windowSize.height/2; 
    setLocation(dx, dy); 
} 

public static void main(String[] args) { 
    GenerateExam exam = new GenerateExam(); 
    exam.setVisible(true); 
} 

}

+0

button.setBounds(...)は、レイアウトマネージャを使用しているので効果がありません。 – FredK

+0

私は、最高の答えは:このコードをIDEとルック・ボタンで使用し、スクロール・ダウンしてスクロール・アップするとボタンが見えなくなる – Hundasse

答えて

1
contentPane.setLayout(new BorderLayout(0, 0)); 
contentPane.add(button); 

setContentPane(contentPane); 
JPanel container = new JPanel(); 
JScrollPane jsp = new JScrollPane(container); 
jsp.getVerticalScrollBar().setUnitIncrement(16); 
container.setPreferredSize(new Dimension(750, 4000)); 
container.setLayout(null); 

getContentPane().add(jsp); 
  1. あなたはのBorderLayoutを持つように、コンテンツペインを設定してみました。
  2. 次に、「ボタン」をcontentPaneに、「jsp」をcontentPaneに追加します。 3.問題は、両方のコンポーネントが "CENTER"に追加されるように制約を指定していないことです。ただし、「CENTER」に表示できるコンポーネントは1つだけなので、スクロールペインだけが表示されます。
  3. ただし、スクロールペインには何も表示されない空のパネルが含まれています。

あなたがやろうとしているか本当にわからないが、あなたのような何か試すことができます。

  1. )は
  2. 使用setBounds(nullのレイアウトを使用:しないでください

    JPanel contentPane = new JPanel(new BorderLayout()); 
    setContentPane(contentPane); 
    
    JButton button = new JButton("Click Me"); 
    add(button, BorderLayout.PAGE_START); 
    
    JScrollPane scrollPane = new JScrollPane(new JTextArea(10, 40)); 
    add(scrollPane, BorderLayout.CENTER); 
    
    pack(); 
    setLocationRelativeTo(null); // this will center the frame 
    

  3. use setPreferredSize()
関連する問題