Jar-файл - это zip-файл .....
Итак, чтобы прочитать файл jar, попробуйте
ZipFile file = new ZipFile("whatever.jar");
if (file != null) {
ZipEntries entries = file.entries(); //get entries from the zip file...
if (entries != null) {
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
//use the entry to see if it's the file '1.txt'
//Read from the byte using file.getInputStream(entry)
}
}
}
Надеюсь, это поможет.
Взгляните на эту статью, там есть библиотека элементов управления , которая поддерживает альфа-смешение, которое вы можете расширить до элемента управления ListView как хорошо.
Вы делаете это так же, как и в win32.
Все, что вам нужно сделать, это создать подкласс элемента управления и переопределить оконное сообщение WM_ERASEBKGND
. Вы также можете переопределить сообщение WM_CTLCOLOR
, чтобы установить текстовый режим в ПРОЗРАЧНЫЙ.
Я сделал это почти для всех стандартных элементов управления, и он отлично работает.
Обновление:
Это Начиная пример в MFC, вам все равно нужно каким-то образом нарисовать фон на элементе управления.
class TransparentListView : public CListView
{
public:
TransparentListView();
virtual ~ToolsListCtrl();
protected:
afx_msg HBRUSH CtlColor(CDC* /*pDC*/, UINT /*nCtlColor*/);
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
private:
DECLARE_MESSAGE_MAP();
};
IMPLEMENT_DYNAMIC(TransparentListView , CListView)
TransparentListView::TransparentListView()
{
}
TransparentListView::~TransparentListView()
{
}
BEGIN_MESSAGE_MAP(TransparentListView, CListView)
ON_WM_CTLCOLOR_REFLECT()
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
HBRUSH TransparentListView::CtlColor(CDC* pDC, UINT /*nCtlColor*/)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)GetStockObject(NULL_BRUSH);
}
BOOL TransparentListView::OnEraseBkgnd(CDC* pDC)
{
// You will need to force the drawing of the background here
// onto the pDC, there are lots of ways to do this.
// I've done it my having a pointer to a interface that
// draws the background image
return TRUE;
}