Очень просто добавить изображение в проект и просмотреть изображение. Сначала создайте в своем проекте папку, которая может содержать изображения любого типа.
Затем щелкните правой кнопкой мыши на Project ->>
. Перейдите в Build Path ->>
, сконфигурируйте Build Path ->>
, добавьте папку Class ->>
, выберите вашу папку (которую вы только что создали для хранения изображений) под именем проекта.
class Surface extends JPanel {
private BufferedImage slate;
private BufferedImage java;
private BufferedImage pane;
private TexturePaint slatetp;
private TexturePaint javatp;
private TexturePaint panetp;
public Surface() {
loadImages();
}
private void loadImages() {
try {
slate = ImageIO.read(new File("images\\slate.png"));
java = ImageIO.read(new File("images\\java.png"));
pane = ImageIO.read(new File("images\\pane.png"));
} catch (IOException ex) {
Logger.`enter code here`getLogger(Surface.class.getName()).log(
Level.SEVERE, null, ex);
}
}
private void doDrawing(Graphics g) {
Graphics2D g2d = (Graphics2D) g.create();
slatetp = new TexturePaint(slate, new Rectangle(0, 0, 90, 60));
javatp = new TexturePaint(java, new Rectangle(0, 0, 90, 60));
panetp = new TexturePaint(pane, new Rectangle(0, 0, 90, 60));
g2d.setPaint(slatetp);
g2d.fillRect(10, 15, 90, 60);
g2d.setPaint(javatp);
g2d.fillRect(130, 15, 90, 60);
g2d.setPaint(panetp);
g2d.fillRect(250, 15, 90, 60);
g2d.dispose();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
doDrawing(g);
}
}
public class TexturesEx extends JFrame {
public TexturesEx() {
initUI();
}
private void initUI() {
add(new Surface());
setTitle("Textures");
setSize(360, 120);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
TexturesEx ex = new TexturesEx();
ex.setVisible(true);
}
});
}
}
Вот eet
. Работает со всеми Bash, которые мне попадаются, от 2.05b до 4.0.
#!/bin/bash
tee_args=()
while [[ $# > 0 && $1 != -- ]]; do
tee_args=("${tee_args[@]}" "$1")
shift
done
shift
# now ${tee_args[*]} has the arguments before --,
# and $* has the arguments after --
# redirect standard out through a pipe to tee
exec | tee "${tee_args[@]}"
# do the *real* exec of the desired program
exec "$@"
( pipefail
и $ PIPESTATUS
хороши, но я помню, что они были представлены в 3.1 или около того .)
Здесь наткнулся на пару интересных решений http://www.perlmonks.org/?node_id=597613 .
1) Доступна переменная $ PIPESTATUS в bash:
false | tee /dev/null
[ $PIPESTATUS -eq 0 ] || exit $PIPESTATUS
2) И простейший прототип «eet» в perl может выглядеть следующим образом:
open MAKE, "command 2>&1 |" or die;
open (LOGFILE, ">>some.log") or die;
while (<MAKE>) { print LOGFILE $_; print }
close MAKE; # to get $?
my $exit = $? >> 8;
close LOGFILE;
{ mycommand --foo --bar 2>&1; ret=$?; } | tee -a some.log; (exit $ret)
#!/bin/sh
logfile="$1"
shift
exec 2>&1
exec "$@" | tee "$logfile"
Надеюсь, это сработает для вас.
G'day,
Предполагая bash или zsh,
my_command >>my_log 2>&1
NB Последовательность перенаправления и дублирования STDERR на STDOUT важна!
Правка: Упс. Не понимал, что вы тоже хотите видеть результат на экране. Это, конечно, направит весь вывод в файл my_log.
HTH
ура,
Это работает с bash:
(
set -o pipefail
mycommand --foo --bar | tee some.log
)
Круглые скобки предназначены для ограничения эффекта pipefail только одной командой.
Из справочной страницы bash (1):
Статус возврата конвейера - это статус выхода последней команды, если не включена опцияpipefail
. Еслиpipefail
включен, статус возврата конвейера - это значение последней (самой правой) команды для выхода с ненулевым статусом или ноль, если все команды завершаются успешно.