2016-01-23 2 views
-1

Я знаю, что это было задано несколько раз, но я искал везде и до сих пор не нашел ответа. Я относительно новичок в Java. У меня естьFit setIcon для JButton Array

Позже я назначаю b[3][3].setIcon(path). Однако изображение на path всегда представляет собой небольшую часть фактического изображения размером JButton. Я хочу изменить размер изображения в соответствии с размером JButton. Есть какой-либо способ сделать это? Кстати, вот код, который это (я думаю) важно:

int n = 8; 
int m = 8; 

... 

      b = new JButton[n][m]; 
      setLayout(new GridLayout(n,m)); 
      for (int y = 0;y<m;y++){ 
        for (int x = 0;x<n;x++){ 
          b[x][y] = new JButton(" "); 
          b[x][y].addActionListener(this); 
          add(b[x][y]); 
          b[x][y].setEnabled(true); 
        } 
      } 
+0

Это очень сложный вопрос, вы можете взглянуть на [это] (http://stackoverflow.com/questions/11959758/java-maintaining-aspect-ratio-of-jpanel-background-image/11959928# 11959928) и [this] (http://stackoverflow.com/questions/21070703/how-to-properly-refresh-image-in-jframe/21070799#21070799) и [это] (http://stackoverflow.com/ вопросы/14548808/scale-the-imageicon-automatic-to-label-size/14553003 # 14553003) для некоторых идей – MadProgrammer

+0

Хорошо, я проверю это. – k97513

ответ

1

Что вы, очевидно, нужно это метод Icon Resizer, что-то в пути, что я обеспечил ниже:

public static Icon resizeIcon(ImageIcon icon, int resizedWidth, int resizedHeight) { 
    Image img = icon.getImage(); 
    Image img = img.getScaledInstance(resizedWidth, resizedHeight, java.awt.Image.SCALE_SMOOTH); 
    return new ImageIcon(img); 
} 

вы можете вызвать этот метод после того, как изображение уже было применено к JButton и после она была добавлена ​​к любой панели:

b[3][3].setIcon(path) 
b[3][3].setIcon(resizeIcon((ImageIcon) b[3][3].getIcon(), 
    b[3][3].getWidth() - 15, b[3][3].getHeight() - 15)); 

или вы сотрудничаете пакетирования сделать это таким образом:

ImageIcon img = new ImageIcon("MyImage.png"); 
Icon icn = resizeIcon(img, b[3][3].getWidth() - 15, b[3][3].getHeight() - 15); 
b[3][3].setIcon(icn); 
1

То, что я хочу, чтобы изменить размер изображения, чтобы соответствовать размеру JButton.

Вы можете использовать класс Stretch Icon.

Это позволит автоматически изменить размер Icon:

  1. , чтобы заполнить пространство кнопки, или
  2. держать Icon пропорцию и заполнить пространство кнопки

изменение размера выполняется динамически, поэтому вам не нужны масштабированные изображения.

+0

Я использовал его, но когда я сделал «ImageIcon red = new StretchIcon (path)», он не сработал ... – k97513

+0

Тогда ваш путь неправильный или вы не загрузили этот класс, так как он не является частью JDK. – camickr

+0

Путь правильный, и какой класс вы имеете в виду? – k97513

Смежные вопросы