[英]How to fix JScrollBar on JLabel with ImageIcon in Java?
誰能幫我? 我正在嘗試創建一個JFrame
,在其中可以調整JScrollBar
並使用ImageIcon
將視圖從JLabel
頂部更改為底部,包括具有JFileChooser
的MouseEvent
的其他JLabel
。
不幸的是,我的代碼無法正常運行。 任何想法為什么這樣做? 還是有任何我應該注意的丟失代碼? 我唯一的目標是使JScrollBar
在兩個JLabels
上都能工作
public class DocVieweR extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private int yPos = 0;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DocVieweR frame = new DocVieweR();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DocVieweR() {
setTitle("DocVieweR");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(816, 705);
setLocationRelativeTo(null);
setResizable(false);
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollBar scrollBar = new JScrollBar();
scrollBar.addAdjustmentListener(new AdjustmentListener() {
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
yPos =+ e.getValue();
}
});
scrollBar.setBounds(793, 0, 17, 676);
contentPane.add(scrollBar);
JLabel lblPHOTO1x1 = new JLabel("SELECT IMAGE");
lblPHOTO1x1.setFont(new Font("Segoe UI", Font.BOLD, 16));
lblPHOTO1x1.setHorizontalAlignment(SwingConstants.CENTER);
lblPHOTO1x1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser chosenFILE = new JFileChooser();
chosenFILE.showOpenDialog(null);
File getFILE = chosenFILE.getSelectedFile();
ImageIcon pic = new ImageIcon(getFILE.getAbsolutePath());
lblPHOTO1x1.setIcon(pic);
}
});
lblPHOTO1x1.setBounds(585, 228, 129, 128);
contentPane.add(lblPHOTO1x1);
JLabel lblBIODATA = new JLabel("");
ImageIcon img = new ImageIcon("resources/BIODATA_96dpi.jpg");
lblBIODATA.setIcon(img);
lblBIODATA.setBounds(0, yPos, 793, 1122);
contentPane.add(lblBIODATA);
}
}
我應該一直使用JScrollPane時一直在使用JScrollBar。 另外,我偶然發現您必須添加額外的一行代碼,例如“ scrollPane.setViewportView(JLabelNAME);”。 為了使其正常工作,我還注意到,使用JFileChooser導入圖像后,一旦移動滾動條,圖像就會消失,但不會有太大問題(一些調試可能會有所幫助)。 contentPane.setLayout(null); 和setBounds(...)都不是問題,但盡管如此,我還是想到了。 謝謝你們! :d
公共類DocVieweR擴展了JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
DocVieweR frame = new DocVieweR();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public DocVieweR() {
setTitle("DocVieweR");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(818, 705);
setLocationRelativeTo(null);
setResizable(false);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblPHOTO1x1 = new JLabel("SELECT IMAGE");
lblPHOTO1x1.setFont(new Font("Segoe UI", Font.BOLD, 16));
lblPHOTO1x1.setHorizontalAlignment(SwingConstants.CENTER);
lblPHOTO1x1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser chosenFILE = new JFileChooser();
chosenFILE.showOpenDialog(null);
File getFILE = chosenFILE.getSelectedFile();
ImageIcon pic = new ImageIcon(getFILE.getAbsolutePath());
lblPHOTO1x1.setIcon(pic);
}
});
lblPHOTO1x1.setBounds(585, 228, 129, 128);
contentPane.add(lblPHOTO1x1);
//scrollPane.setViewportView(lblPHOTO1x1);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(0, 0, 812, 676);
contentPane.add(scrollPane);
JLabel lblBIODATA = new JLabel("");
ImageIcon img = new ImageIcon("resources/BIODATA_96dpi.jpg");
lblBIODATA.setIcon(img);
lblBIODATA.setSize(793, 1122);
scrollPane.setViewportView(lblBIODATA);
contentPane.add(lblBIODATA);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.